java excel 操作方式_java excel兩種操作方式

Excel是我們平時工作中比較常用的用於存儲二維表數據的,JAVA也可以直接對Excel進行操作,在這篇博客中將為大家介紹兩種操作Excel的方式,分別為:jxl和poi。

對於兩者的區別網上有測試如下:

測試結果

類型   數據量(行)   執行時間(ms)   執行時間(ms)   執行時間(ms)   平均時間(ms)

POI   1000       579       562       532       558

JXL   1000       500       469       484       484

POI   5000       984       984       969       979

JXL   5000       922       860       890       891

POI   10000      1609      1594      1641       1615

JXL   10000        1437      1453      1406       1432

POI   30000      3782      3765      3828       3792

JXL   30000      3922      3906      3922       3917

POI   50000      5953      6484      5859       6099

JXL   50000      6765      7421      6984       7057

在小數據量時jxl快於poi,在大數據量時poi要快於jxl。但差距都不明顯。

(一)jxl

寫Excel

importjava.io.File;importjava.io.IOException;importjxl.Workbook;importjxl.write.Label;importjxl.write.WritableSheet;importjxl.write.WritableWorkbook;importjxl.write.WriteException;/*** jxl寫Excel

*

*@authorjianggujin

**/

public classJxlWriteDemo

{public static void main(String[] args) throwsIOException, WriteException

{

File xlsFile= new File("jxl.xls");//創建一個工作簿

WritableWorkbook workbook =Workbook.createWorkbook(xlsFile);//創建一個工作表

WritableSheet sheet = workbook.createSheet("sheet1", 0);for (int row = 0; row < 10; row++)

{for (int col = 0; col < 10; col++)

{//向工作表中添加數據

sheet.addCell(new Label(col, row, "data" + row +col));

}

}

workbook.write();

workbook.close();

}

}

讀Excel

importjava.io.File;importjava.io.IOException;importjxl.Sheet;importjxl.Workbook;importjxl.read.biff.BiffException;/*** jxl讀excel

*

*@authorjianggujin

**/

public classJxlReadDemo

{public static void main(String[] args) throwsBiffException, IOException

{

File xlsFile= new File("jxl.xls");//獲得工作簿對象

Workbook workbook =Workbook.getWorkbook(xlsFile);//獲得所有工作表

Sheet[] sheets =workbook.getSheets();//遍歷工作表

if (sheets != null)

{for(Sheet sheet : sheets)

{//獲得行數

int rows =sheet.getRows();//獲得列數

int cols =sheet.getColumns();//讀取數據

for (int row = 0; row < rows; row++)

{for (int col = 0; col < cols; col++)

{

System.out.printf("%10s", sheet.getCell(col, row)

.getContents());

}

System.out.println();

}

}

}

workbook.close();

}

}

(二)poi

寫Excel

importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;/*** Poi寫Excel

*

*@authorjianggujin

**/

public classPoiWriteDemo

{public static void main(String[] args) throwsIOException

{//創建工作薄

HSSFWorkbook workbook = newHSSFWorkbook();//創建工作表

HSSFSheet sheet = workbook.createSheet("sheet1");for (int row = 0; row < 10; row++)

{

HSSFRow rows=sheet.createRow(row);for (int col = 0; col < 10; col++)

{//向工作表中添加數據

rows.createCell(col).setCellValue("data" + row +col);

}

}

File xlsFile= new File("poi.xls");

FileOutputStream xlsStream= newFileOutputStream(xlsFile);

workbook.write(xlsStream);

}

}

讀Excel

importjava.io.File;importjava.io.IOException;importorg.apache.poi.openxml4j.exceptions.InvalidFormatException;importorg.apache.poi.ss.usermodel.Row;importorg.apache.poi.ss.usermodel.Sheet;importorg.apache.poi.ss.usermodel.Workbook;importorg.apache.poi.ss.usermodel.WorkbookFactory;/*** Poi寫Excel

*

*@authorjianggujin

**/

public classPoiReadDemo

{public static void main(String[] args) throwsIOException,

InvalidFormatException

{

File xlsFile= new File("poi.xls");//獲得工作簿

Workbook workbook =WorkbookFactory.create(xlsFile);//獲得工作表個數

int sheetCount =workbook.getNumberOfSheets();//遍歷工作表

for (int i = 0; i < sheetCount; i++)

{

Sheet sheet=workbook.getSheetAt(i);//獲得行數

int rows = sheet.getLastRowNum() + 1;//獲得列數,先獲得一行,在得到改行列數

Row tmp = sheet.getRow(0);if (tmp == null)

{continue;

}int cols =tmp.getPhysicalNumberOfCells();//讀取數據

for (int row = 0; row < rows; row++)

{

Row r=sheet.getRow(row);for (int col = 0; col < cols; col++)

{

System.out.printf("%10s", r.getCell(col).getStringCellValue());

}

System.out.println();

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值