導航:首頁 > 文件教程 > java讀取excel文件內容

java讀取excel文件內容

發布時間:2021-11-15 16:02:48

1. 用java讀取Excel表格

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.Colour;
import jxl.format.VerticalAlignment;
import jxl.read.biff.BiffException;
import jxl.write.Formula;
import jxl.write.Label;
import jxl.write.WritableCellFeatures;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
/**
* <p>標題:readExcel</p>
* <p>描述:讀取Excel文件數據</p>
* @param excelfilePath Excel文件路徑
* @param startRow 開始行
* @param startCol 開始列
* @return List<ArrayList<String>>
* @throws IOException
* @throws BiffException
*/
public List<ArrayList<String>> readExcel(String excelfilePath,
int startRow, int startCol) throws IOException, BiffException {
// 讀取xls文件
InputStream ins = new FileInputStream(excelfilePath);
// 設置讀文件編碼
WorkbookSettings setEncode = new WorkbookSettings();
setEncode.setEncoding("UTF-8");
Workbook rwb = Workbook.getWorkbook(ins, setEncode);
List<ArrayList<String>> alldata = new ArrayList<ArrayList<String>>();
ArrayList<String> data = null;
alldata.clear();
// 獲得當前Excel表共有幾個sheet
// Sheet[] sheets = rwb.getSheets();
// 獲得表數
// int pages = sheets.length;
// 將excel表中的數據讀取出來
// 在從Excel中讀取數據的時候不需要知道每個sheet有幾行,有那多少列
// for (int i = 0; i < pages; i++) {
Sheet sheet = rwb.getSheet(0);
int cols = sheet.getColumns(); // 列
// 讀取每一行對應的列數目
// 循環讀取每一行的全部列數目的內容
int rows = sheet.getRows(); // 行
for (int r = startRow; r < rows; r++) {
data = new ArrayList<String>();
// 行循環,Excel的行列是從(0,0)開始
for (int c = startCol; c < cols; c++) {
Cell excelRows = sheet.getCell(c, r);
String strRow = excelRows.getContents();
data.add(strRow);
}
alldata.add(data);
}
// }
ins.close();
return alldata;
}

自己寫的java讀取excel表格數據的方法,需要導入jxl包

2. JAVA讀取EXCEL文件

相關功能代碼比較多 貼出來不是很方便 我跟你說一下思路吧
首先是用到的工具是poi 這個你可以去官網載一個
其次 你要注意區分你的excel 是舊的還是新的 office 07版之前和07版之後的 讀取的類不一樣
把握住這2點 差不多就OK了
大體的讀取流程是
讀取workbook -> sheet -> row -> col

3. 如何用JAVA讀取EXCEL文件裡面的數據

使用poi能解決你的問題
或者是
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import static java.lang.System.out;

public class FileTest {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
String string = "";
File file = new File("c:" + File.separator + "xxx.xls");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String str;
while((str = br.readLine()) != null) {
string += str;
}
out.println(string);
}

}

4. java如何直接從流中讀取excel的文件內容Stream

讀取excel一般使用開源工具包來讀取的。因為office文件是經過處理的,用流讀到的都是亂碼。
你可以自己從網路「java 去讀excel」找些資料,一堆一堆的。而且都封裝好了,用起來也方便。

我這也有代碼。如果你找到的代碼都不可用,我再發給你。

5. Java中如何讀取excel文件內容並且將內容以表格的形式顯示在窗體里

這個設計的內容如下:

  1. PoI技術,將表格數據解析存儲到資料庫

  2. 數據顯示,jqGrid這些專業的圖表數據顯示插件可以完成,當然也可以在JSP頁面用普通的<table>標簽實現

6. java中怎麼讀取excel文件

package com.jqgj.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.io.FilenameUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellValue;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ImportNameTest {
/**
* Excel 2003
*/
private final static String XLS = "xls";
/**
* Excel 2007
*/
private final static String XLSX = "xlsx";
/**
* 分隔符
*/
private final static String SEPARATOR = "|";

/**
* 由Excel文件的Sheet導出至List
*
* @param file
* @param sheetNum
* @return
*/
public static List<String> exportListFromExcel(File file, int sheetNum)
throws IOException {
return exportListFromExcel(new FileInputStream(file),
FilenameUtils.getExtension(file.getName()), sheetNum);
}
/**
* 由Excel流的Sheet導出至List
*
* @param is
* @param extensionName
* @param sheetNum
* @return
* @throws IOException
*/
public static List<String> exportListFromExcel(InputStream is,
String extensionName, int sheetNum) throws IOException {

Workbook workbook = null;

if (extensionName.toLowerCase().equals(XLS)) {
workbook = new HSSFWorkbook(is);
} else if (extensionName.toLowerCase().equals(XLSX)) {
workbook = new XSSFWorkbook(is);
}

return exportListFromExcel(workbook, sheetNum);
}
/**
* 由指定的Sheet導出至List
*
* @param workbook
* @param sheetNum
* @return
* @throws IOException
*/
private static List<String> exportListFromExcel(Workbook workbook,
int sheetNum) {

Sheet sheet = workbook.getSheetAt(sheetNum);

// 解析公式結果
FormulaEvaluator evaluator = workbook.getCreationHelper()
.createFormulaEvaluator();

List<String> list = new ArrayList<String>();

int minRowIx = sheet.getFirstRowNum();
int maxRowIx = sheet.getLastRowNum();
for (int rowIx = minRowIx; rowIx <= maxRowIx; rowIx++) {
Row row = sheet.getRow(rowIx);
StringBuilder sb = new StringBuilder();

short minColIx = row.getFirstCellNum();
short maxColIx = row.getLastCellNum();
for (short colIx = minColIx; colIx <= maxColIx; colIx++) {
Cell cell = row.getCell(new Integer(colIx));
CellValue cellValue = evaluator.evaluate(cell);
if (cellValue == null) {
continue;
}
// 經過公式解析,最後只存在Boolean、Numeric和String三種數據類型,此外就是Error了
// 其餘數據類型,根據官方文檔,完全可以忽略http://poi.apache.org/spreadsheet/eval.html
switch (cellValue.getCellType()) {
case Cell.CELL_TYPE_BOOLEAN:
sb.append(SEPARATOR + cellValue.getBooleanValue());
break;
case Cell.CELL_TYPE_NUMERIC:
// 這里的日期類型會被轉換為數字類型,需要判別後區分處理
if (DateUtil.isCellDateFormatted(cell)) {
sb.append(SEPARATOR + cell.getDateCellValue());
} else {
//把手機號碼轉換為字元串
DecimalFormat df = new DecimalFormat("#");
sb.append(SEPARATOR + df.format(cellValue.getNumberValue()));
}
break;
case Cell.CELL_TYPE_STRING:
sb.append(SEPARATOR + cellValue.getStringValue());
break;
case Cell.CELL_TYPE_FORMULA:
break;
case Cell.CELL_TYPE_BLANK:
break;
case Cell.CELL_TYPE_ERROR:
break;
default:
break;
}
}
list.add(sb.toString());
}
return list;
}

/**
* @param args
*/
public static void main(String[] args) {
String path = "f:\\telName.xlsx";
try {
List<String> listS= exportListFromExcel(new File(path),0);
for(int i=0;i<listS.size();i++){
System.out.println(listS.get(i));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

7. java如何讀取整個excel文件的內容

在Java中讀取Excel文件的內容

在這里,我使用的是一個叫Java Excel API的東西,類似的還有的POI,不過感覺那個

太復雜了點兒。而且jxl對中文的支持相當的好,至少我在用的過程中一點問題沒出。

一、下載地址

http://www.andykhan.com/jexcelapi/

二、特性

可以讀取Excel 95, 97, 2000文件

可以讀或寫Excel 97及其以後版本的的公式(不過我發現好像有bug)

生成Excel 97格式的電子表格

支持字體、數字和日期格式化

支持單元格的顏色和陰影

可以編輯現有的文件

三、讀文件

//聲明一下,記得後面要關閉哦。。

Workbook workbook = null;

try {

workbook = Workbook.getWorkbook(new File("d:\temp\TestRead.xls"));

} catch (Exception e) {

throw new Exception("file to import not found!");

}

Sheet sheet = workbook.getSheet(0);

Cell cell = null;

int columnCount=3;

int rowCount=sheet.getRows();

for (int i = 0; i<rowcount; p="" {

for (int j = 0; j<columncount; p="" {

//注意,這里的兩個參數,第一個是表示列的,第二才表示行

cell=sheet.getCell(j, i);

//要根據單元格的類型分別做處理,否則格式化過的內容可能會不正確

if(cell.getType()==CellType.NUMBER){

System.out.print(((NumberCell)cell).getValue());

}

else if(cell.getType()==CellType.DATE){

System.out.print(((DateCell)cell).getDate());

}

else{

System.out.print(cell.getContents());

}

//System.out.print(cell.getContents());

System.out.print(" ");

}

System.out.print(" ");

}

//關閉它,否則會有內存泄露

workbook.close();

8. java讀取Excel數據

/**
* 讀取2007 Excel文件的內容
*
* @param filePath
* 待讀取的文件
* @return List
* @throws IOException
*/
public List<String[]> loadExcelXlsx(String filePath, int iCellNum)
throws IOException {
List<String[]> contents = new ArrayList<String[]>();
XSSFWorkbook workbook = null;
XSSFWorkbook xwb = new XSSFWorkbook(filePath);

// 循環工作表Sheet
for (int numSheet = 0; numSheet < xwb.getNumberOfSheets(); numSheet++) {
XSSFSheet xSheet = xwb.getSheetAt(numSheet);
if (xSheet == null) {
continue;
}
// 循環行Row
for (int rowNum = 0; rowNum <= xSheet.getLastRowNum(); rowNum++) {
XSSFRow xRow = xSheet.getRow(rowNum);
if (xRow == null) {
continue;
}
// 如果已經開始讀取,那麼忽略第一行(表頭)
if (rowNum == 0 && contents.size() > 0) {
continue;
}
// int iCellNum = xRow.getLastCellNum();
String[] rowData = new String[iCellNum];
// 循環列Cell
for (int cellNumOfRow = 0; cellNumOfRow < iCellNum; cellNumOfRow++) {
XSSFCell xCell = xRow.getCell(cellNumOfRow);
if (xCell == null) {
rowData[cellNumOfRow] = null;
continue;
}

if (xCell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {
rowData[cellNumOfRow] = String.valueOf(xCell
.getNumericCellValue());
} else if (xCell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN) {
rowData[cellNumOfRow] = String.valueOf(xCell
.getBooleanCellValue());
} else if (xCell.getCellType() == XSSFCell.CELL_TYPE_FORMULA) {
rowData[cellNumOfRow] = String.valueOf(xCell
.getCellFormula());
} else {
rowData[cellNumOfRow] = xCell.getStringCellValue();
}
}
contents.add(rowData);
}
}
return contents;
}

9. java怎麼讀取excel文件里的數據

下面是一個簡單的讀取例子,如果報「java.io.IOException: Invalid header signature; read 4503608217567241, expected -2226271756974174256」之類的異常請用Excel打開(如果能打的開的話)然後另存為一下。

http://www.jb51.net/article/43713.htm

importjava.io.BufferedInputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.text.DecimalFormat;
importjava.text.SimpleDateFormat;
importjava.util.ArrayList;
importjava.util.Arrays;
importjava.util.Date;
importjava.util.List;
importorg.apache.poi.hssf.usermodel.HSSFCell;
importorg.apache.poi.hssf.usermodel.HSSFDateUtil;
importorg.apache.poi.hssf.usermodel.HSSFRow;
importorg.apache.poi.hssf.usermodel.HSSFSheet;
importorg.apache.poi.hssf.usermodel.HSSFWorkbook;
importorg.apache.poi.poifs.filesystem.POIFSFileSystem;
publicclassTest0{
/**
*@paramargs
*@throwsIOException
*@throwsFileNotFoundException
*/
publicstaticvoidmain(String[]args)throwsFileNotFoundException,
IOException{
Filefile=newFile("C://test01.xls");//Excel文件路徑
String[][]result=getData(file,1);
introwLength=result.length;
for(inti=0;i<rowLength;i++){
for(intj=0;j<result[i].length;j++){
System.out.print(result[i][j]+" ");
}
System.out.println();
}
}
/**
*讀取Excel的內容,第一維數組存儲的是一行中格列的值,二維數組存儲的是多少個行
*
*@paramfile
*讀取數據的源Excel
*@paramignoreRows
*讀取數據忽略的行數,比喻行頭不需要讀入忽略的行數為1
*@return讀出的Excel中數據的內容
*@throwsFileNotFoundException
*@throwsIOException
*/
publicstaticString[][]getData(Filefile,intignoreRows)
throwsFileNotFoundException,IOException{
List<String[]>result=newArrayList<String[]>();
introwSize=0;
BufferedInputStreamin=newBufferedInputStream(newFileInputStream(
file));
//打開HSSFWorkbook
POIFSFileSystemfs=newPOIFSFileSystem(in);
HSSFWorkbookwb=newHSSFWorkbook(fs);
HSSFCellcell=null;
for(intsheetIndex=0;sheetIndex<wb.getNumberOfSheets();sheetIndex++){
HSSFSheetst=wb.getSheetAt(sheetIndex);
//第一行為標題,不取
for(introwIndex=ignoreRows;rowIndex<=st.getLastRowNum();rowIndex++){
HSSFRowrow=st.getRow(rowIndex);
if(row==null){
continue;
}
inttempRowSize=row.getLastCellNum()+1;
if(tempRowSize>rowSize){
rowSize=tempRowSize;
}
String[]values=newString[rowSize];
Arrays.fill(values,"");
booleanhasValue=false;
for(shortcolumnIndex=0;columnIndex<=row.getLastCellNum();columnIndex++){
Stringvalue="";
cell=row.getCell(columnIndex);
if(cell!=null){
//注意:一定要設成這個,否則可能會出現亂碼
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
switch(cell.getCellType()){
caseHSSFCell.CELL_TYPE_STRING:
value=cell.getStringCellValue();
break;
caseHSSFCell.CELL_TYPE_NUMERIC:
if(HSSFDateUtil.isCellDateFormatted(cell)){
Datedate=cell.getDateCellValue();
if(date!=null){
value=newSimpleDateFormat("yyyy-MM-dd")
.format(date);
}else{
value="";
}
}else{
value=newDecimalFormat("0").format(cell
.getNumericCellValue());
}
break;
caseHSSFCell.CELL_TYPE_FORMULA:
//導入時如果為公式生成的數據則無值
if(!cell.getStringCellValue().equals("")){
value=cell.getStringCellValue();
}else{
value=cell.getNumericCellValue()+"";
}
break;
caseHSSFCell.CELL_TYPE_BLANK:
break;
caseHSSFCell.CELL_TYPE_ERROR:
value="";
break;
caseHSSFCell.CELL_TYPE_BOOLEAN:
value=(cell.getBooleanCellValue()==true?"Y"
:"N");
break;
default:
value="";
}
}
if(columnIndex==0&&value.trim().equals("")){
break;
}
values[columnIndex]=rightTrim(value);
hasValue=true;
}
if(hasValue){
result.add(values);
}
}
}
in.close();
String[][]returnArray=newString[result.size()][rowSize];
for(inti=0;i<returnArray.length;i++){
returnArray[i]=(String[])result.get(i);
}
returnreturnArray;
}
/**
*去掉字元串右邊的空格
*
*@paramstr
*要處理的字元串
*@return處理後的字元串
*/
publicstaticStringrightTrim(Stringstr){
if(str==null){
return"";
}
intlength=str.length();
for(inti=length-1;i>=0;i--){
if(str.charAt(i)!=0x20){
break;
}
length--;
}
returnstr.substring(0,length);
}
}

10. java讀取excel文件內容,可指定讀取某列的數據,求解答,謝謝

getRow(int rownum) 讀取某行,再在這行的基礎上使用Row.getCell(int cellnum)方法。

閱讀全文

與java讀取excel文件內容相關的資料

熱點內容
阿里巴巴全屏輪播代碼 瀏覽:61
搜狐視頻文件在哪 瀏覽:990
雲台攝像機安裝教程 瀏覽:520
怎樣新建文件存放圖片 瀏覽:698
linux控制台怎麼打開 瀏覽:653
手機怎麼把文件製作成軟體 瀏覽:640
設置文件屬性為只讀屬性 瀏覽:923
都有哪些批發網站 瀏覽:835
家庭用什麼軟體做電腦編程 瀏覽:774
蘋果手機怎麼把文件壓成7z 瀏覽:597
禁止使用qq瀏覽器代碼 瀏覽:56
怎麼開通移動4g網路 瀏覽:130
岳陽微信公司 瀏覽:96
win10如何從備份中恢復出廠設置密碼 瀏覽:659
什麼軟體修改wifi密碼錯誤 瀏覽:582
遇見不安全網站怎麼辦 瀏覽:251
哪個app有慶余年電視劇 瀏覽:420
iphone5s視頻時很黑 瀏覽:601
js獲取埠號 瀏覽:347
手機短息發的鏈接病毒蘋果手機 瀏覽:724

友情鏈接