java操作excel常用的兩種方式


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

************************************************************

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

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();
         }
      }
   }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM