java如何导入excel文件

内容摘要
Java使用POI导入Excel文件,操作起来比较简单,且支持xlsx格式。下载POI资源包从官网下载POI,本文选择的是版本是3.17,下载后文件名是poi-bin-3.17.zip。起初担心版本太新,和现有项
文章正文

Java使用POI导入Excel文件,操作起来比较简单,且支持xlsx格式。

下载POI资源包

从官网下载POI,本文选择的是版本是3.17,下载后文件名是poi-bin-3.17.zip。起初担心版本太新,和现有项目不兼容,后来程序跑起来没发现什么问题。

将poi-3.17下的jar包和poi-3.17lib*.jar包都复制到项目的WEB-INFlib下,并在项目配置编译路径。

24b124fa114cee9056d7f5a8d0711ce.png

在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:	est.xlsx');
    workbook = new HSSFWorkbook(inputStream);
    inputStream.close();
} catch (Exception e) {
    e.printStackTrace();
}

遍历Excel Sheet表

// 遍历Excel Sheetfor (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));

推荐教程:Java教程

代码注释
[!--zhushi--]

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!