1. 程式人生 > >java excel兩種操作方式

java excel兩種操作方式

我們 網上 class 工作 use 列數 args println sheet

原文https://www.cnblogs.com/wangyang108/p/6030420.html

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

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

測試結果

類型   數據量(行)   執行時間(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

import java.io.File;
import java.io.IOException;

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

/**
 * jxl寫Excel
 * 
 * @author jianggujin
 * 
 
*/ public class JxlWriteDemo { public static void main(String[] args) throws IOException, 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

import java.io.File;
import java.io.IOException;

import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

/**
 * jxl讀excel
 * 
 * @author jianggujin
 * 
 */
public class JxlReadDemo
{
   public static void main(String[] args) throws BiffException, 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

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * Poi寫Excel
 * 
 * @author jianggujin
 * 
 */
public class PoiWriteDemo
{
   public static void main(String[] args) throws IOException
   {
      // 創建工作薄
      HSSFWorkbook workbook = new HSSFWorkbook();
      // 創建工作表
      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 = new FileOutputStream(xlsFile);
      workbook.write(xlsStream);
   }
}

讀Excel

import java.io.File;
import java.io.IOException;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
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.ss.usermodel.WorkbookFactory;

/**
 * Poi寫Excel
 * 
 * @author jianggujin
 * 
 */
public class PoiReadDemo
{
   public static void main(String[] args) throws IOException,
         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();
         }
      }
   }
}

java excel兩種操作方式