java如何導入Excel文件


Java使用POI導入Excel文件,操作起來比較簡單,支持xlsx格式。

下載POI資源包

從官網https://poi.apache.org/下載POI,筆者選擇的是版本是3.17,下載后文件名是poi-bin-3.17.zip。起初擔心版本太新,和現有項目不兼容,后來程序跑起來沒發現什么問題。

將poi-3.17下的jar包和poi-3.17\lib\*.jar包都復制到項目的WEB-INF\lib下,並在項目配置編譯路徑。

在Java文件中添加以下引用,其中hssf用於xls格式,xssf用於xlsx格式。

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

 讀取Excel文件

HSSFWorkbook workbook = null;
try {
    // 讀取Excel文件
    InputStream inputStream = new FileInputStream('c:\test.xlsx');
    workbook = new HSSFWorkbook(inputStream);
    inputStream.close();
} catch (Exception e) {
    e.printStackTrace();
}

遍歷Excel Sheet表

// 遍歷Excel Sheet
for (int numSheet = 0; numSheet < workbook.getNumberOfSheets(); numSheet++) {
    workbook.getSheetAt(numSheet);
}

遍歷行

HSSFSheet sheet = workbook.getSheetAt(0);
if (sheet != null) {
    // 循環行
    for     (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) {
        HSSFRow row = sheet.getRow(rowNum);
        if (row == null) {
            continue;// 忽略並繼續讀取
        }
        HSSFCell cell = row.getCell(0);
      if (cell == null) {
            continue;
        }
      //System.out.println('cell.getStringCellValue0():' + cell.getStringCellValue());
        cell = row.getCell(1);
       if (cell == null) {
            continue;
       }
        //System.out.println('cell.getStringCellValue1():' + cell.getStringCellValue());
   }
}

POI遇到問題Cannot get a text value from a numeric cell “Poi”

導入Excel文件時,如果某列是數值類型,直接通過cell.getStringCellValue()會報Cannot get a text value from a numeric cell “Poi”錯誤。

解決辦法

DataFormatter formatter = new DataFormatter();
String val = formatter.formatCellValue(sheet.getRow(col).getCell(row));

 


免責聲明!

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



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