java excel 导入

本文介绍如何使用POI库处理Excel文件,包括导入2003和2007版本的xls和xlsx文件,并进行导出操作。代码示例包括文件路径设置、工作簿和工作表的获取、数据读取与输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
* 导入和导出Excel文件类
* 支持2003(xls)和2007(xlsx)版本的Excel文件
*
* @author yxm
*/
public class OperationExcelForPOI {

public static void main(String[] args) {
// 文件所在路径
String execelFile = "D:\\Download\\公司员工履历表5.xls" ;
//String execelFile = "C:/Book2003.xls" ;
// 导入Excel
new OperationExcelForPOI().impExcel(execelFile) ;
// 导出Excel
// String expFilePath = "C:/testBook.xls" ;
// new OperationExcelForPOI().expExcel(expFilePath);
}

/**
* 导入Excel
* @param execelFile
*/
public void impExcel(String execelFile){
try {
// 构造 Workbook 对象,execelFile 是传入文件路径(获得Excel工作区)
Workbook book = null;
try {
// Excel 2007获取方法
book = new XSSFWorkbook(new FileInputStream(execelFile));
} catch (Exception ex) {
// Excel 2003获取方法
book = new HSSFWorkbook(new FileInputStream(execelFile));
}

// 读取表格的第一个sheet页
Sheet sheet = book.getSheetAt(0);
// 定义 row、cell
Row row;
String cell= "";
// 总共有多少行,从0开始
int totalRows = sheet.getLastRowNum() ;
// 循环输出表格中的内容,首先循环取出行,再根据行循环取出列
for (int i = 1; i <= totalRows; i++) {

  

if(row == null){
// continue ;
// }
// 总共有多少列,从0开始
int totalCells = row.getLastCellNum() ;
for (int j = row.getFirstCellNum(); j < totalCells; j++) {
// 处理空列
if(row.getCell(j) == null || ){
continue ;
}
// 通过 row.getCell(j).toString() 获取单元格内容
cell = row.getCell(j).toString();
if("".equals(cell))continue;
System.out.print(cell +"\t");
}
System.out.println("");
//插入SQL

}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

 

 

//action 

String realpath = ServletActionContext.getServletContext().getRealPath("/images");
//D:\apache-tomcat-6.0.18\webapps\struts2_upload\images
System.out.println("realpath: "+realpath);
if (image != null) {
File savefile = new File(new File(realpath), imageFileName);
if (!savefile.getParentFile().exists())
savefile.getParentFile().mkdirs();
FileUtils.copyFile(image, savefile);
ActionContext.getContext().put("message", "文件上传成功");
}

 

转载于:https://www.cnblogs.com/aiwoqu/p/4142234.html

### Java 实现 Excel 文件导入 为了实现 Java 中的 Excel 文件导入功能,通常会使用 Apache POI 或 EasyExcel 这样的第三方库来简化操作。这些库提供了强大的 API 来处理不同版本的 Excel 文档。 #### 使用 Apache POI 库 Apache POI 是一个广泛使用的开源项目,支持读写 Microsoft Office 文档,特别是 Word Excel 文件。对于 Excel 导入而言,主要涉及 HSSF (适用于 .xls) XSSF (适用于 .xlsx)[^1]。 要开始使用 Apache POI,需先引入 Maven 依赖: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.3</version> </dependency> ``` 接着定义一个简单的 `readExcel` 方法来加载并解析 Excel 文件的内容: ```java import org.apache.poi.ss.usermodel.*; import java.io.FileInputStream; import java.util.Iterator; public class ExcelReader { public static void readExcel(String filePath){ try(FileInputStream fis = new FileInputStream(filePath)){ Workbook workbook = WorkbookFactory.create(fis); Sheet sheet = workbook.getSheetAt(0); Iterator<Row> rowIterator = sheet.iterator(); while(rowIterator.hasNext()){ Row currentRow = rowIterator.next(); // Iterate through each column of the current row Iterator<Cell> cellIterator = currentRow.iterator(); while(cellIterator.hasNext()){ Cell currentCell = cellIterator.next(); switch(currentCell.getCellType()) { case STRING: System.out.print(currentCell.getStringCellValue() + "\t"); break; case NUMERIC: System.out.print(currentCell.getNumericCellValue() + "\t"); break; default: System.out.print("\t"); break; } } System.out.println(""); } } catch(Exception e){ e.printStackTrace(); } } } ``` 这段代码展示了如何打开指定路径下的 Excel 文件,并逐行遍历其单元格内容[^2]。 #### 使用 EasyExcel 库 EasyExcel 是由阿里巴巴开发的一个轻量级 Excel 处理框架,在性能上有显著优势,尤其适合大数据量场景。它基于 SAX 解析器构建,能够有效减少内存占用。 同样地,首先添加 Maven 依赖项: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.0.5</version> </dependency> ``` 然后编写相应的实体类映射以及监听器逻辑,用于接收每一行的数据记录[^3]: ```java @Data class DemoData { @ExcelProperty("字符串标题") private String string; } // 定义监听器 class ExcelListener extends AnalysisEventListener<DemoData>{ @Override public void invoke(DemoData data, AnalysisContext context){ System.out.println(data); } } // 调用方法 EasyExcel.read(fileName).sheet().doRead(new ExcelListener()); ``` 上述例子说明了通过 EasyExcel 可以更加便捷高效地完成 Excel 数据的批量读取工作[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值