java 如何导入excel
导入Excel的方法
Java中导入Excel文件可以通过多种库实现,常见的有Apache POI、JExcelAPI和EasyExcel等。以下是几种主流方法的详细说明。
使用Apache POI导入Excel
Apache POI是处理Microsoft Office文件的主流库,支持.xls和.xlsx格式。
添加依赖(Maven)
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
读取.xlsx文件示例
import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;
public class ExcelReader {
public static void main(String[] args) throws Exception {
String filePath = "example.xlsx";
FileInputStream fis = new FileInputStream(filePath);
Workbook workbook = WorkbookFactory.create(fis);
Sheet sheet = workbook.getSheetAt(0);
for (Row row : sheet) {
for (Cell cell : row) {
System.out.print(cell.toString() + "\t");
}
System.out.println();
}
workbook.close();
fis.close();
}
}
使用EasyExcel导入Excel
EasyExcel是阿里开源的Excel处理工具,适合大数据量场景,内存占用低。
添加依赖(Maven)
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>
读取Excel示例
import com.alibaba.excel.EasyExcel;
import java.util.List;
public class EasyExcelReader {
public static void main(String[] args) {
String fileName = "example.xlsx";
List<Object> data = EasyExcel.read(fileName).sheet().doReadSync();
data.forEach(System.out::println);
}
}
使用JExcelAPI导入Excel
JExcelAPI适合处理.xls格式,API较为简单。
添加依赖(Maven)
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>
读取.xls文件示例
import jxl.Sheet;
import jxl.Workbook;
import java.io.File;
public class JExcelReader {
public static void main(String[] args) throws Exception {
Workbook workbook = Workbook.getWorkbook(new File("example.xls"));
Sheet sheet = workbook.getSheet(0);
for (int i = 0; i < sheet.getRows(); i++) {
for (int j = 0; j < sheet.getColumns(); j++) {
System.out.print(sheet.getCell(j, i).getContents() + "\t");
}
System.out.println();
}
workbook.close();
}
}
处理大数据量的优化建议
对于大型Excel文件(如超过10万行),建议采用以下优化措施:
Apache POI的SAX模式
import org.apache.poi.xssf.eventusermodel.XSSFReader;
import org.apache.poi.openxml4j.opc.OPCPackage;
OPCPackage pkg = OPCPackage.open("large.xlsx");
XSSFReader reader = new XSSFReader(pkg);
// 使用XML解析器逐行处理数据
EasyExcel的监听器模式
EasyExcel.read("large.xlsx", DemoData.class, new AnalysisEventListener<DemoData>() {
@Override
public void invoke(DemoData data, AnalysisContext context) {
// 逐行处理
}
}).sheet().doRead();
格式兼容性注意事项
- .xls(HSSF)和.xlsx(XSSF/SXSSF)需使用不同的POI类
- 日期格式需特殊处理:
Cell.getDateCellValue() - 公式单元格需评估:
DataFormatter.formatCellValue(cell, formulaEvaluator)
以上方法覆盖了从传统格式到现代格式的Excel导入需求,开发者可根据项目规模、性能要求和维护成本选择合适方案。







