POI写入
简单写入
Workbook workbook = new HSSFWorkbook();
Workbook workbook = new XSSFWorkbook();
Workbook workbook = new SXSSFWorkbook();
Sheet sheet = workbook.createSheet("03写入测试");
Row row = sheet.createRow(0);
Cell cell1 = row.createCell(0);
cell1.setCellValue("第一");
Cell cell2 = row.createCell(1);
cell2.setCellValue(666);
Cell cell3 = row.createCell(2);
String time = new DateTime().toString("yyyy-MM-dd HH:mm:ss");
cell3.setCellValue(time);
FileOutputStream fileOutputStream = new FileOutputStream(PATH + "写入测试03.xls");
workbook.write(fileOutputStream);
fileOutputStream.close();
批量写入
for (int rowNum = 0; rowNum < 65536; rowNum++) {
Row row = sheet.createRow(rowNum);
for (int cellNum = 0; cellNum < 10; cellNum++) {
Cell cell = row.createCell(cellNum);
cell.setCellValue(cellNum);
}
}
POI读取
加载
FileInputStream fileInputStream = new FileInputStream(PATH + "读取测试07.xlsx");
Workbook workbook = new XSSFWorkbook(fileInputStream);
Sheet sheet = workbook.getSheetAt(0);
doSomeThing(sheet)
fileInputStream.close();
简单读取
Row row = sheet.getRow(0);
Cell cell = row.getCell(0);
System.out.println(cell.getStringCellValue());
全部读取
for (int rowNum = 0; rowNum < sheet.getPhysicalNumberOfRows(); rowNum++) {
Row rowData = sheet.getRow(rowNum);
if (rowData != null){
for (int cellNum = 0; cellNum < rowData.getPhysicalNumberOfCells(); cellNum++) {
Cell cell = rowData.getCell(cellNum);
if(cell != null){
switch (cell.getCellTypeEnum()){
case STRING:
System.out.print("String:"+cell.getStringCellValue()+"|");
break;
case BOOLEAN:
System.out.print("Bool:"+String.valueOf(cell.getBooleanCellValue())+"|");
break;
case BLANK:
System.out.print("BLANK: "+"|");
break;
case NUMERIC:
System.out.print("NUMERIC-");
if(HSSFDateUtil.isCellDateFormatted(cell)){
System.out.print("DATE:");
Date date = cell.getDateCellValue();
DateTime dateTime = new DateTime(date);
System.out.print(dateTime.toString("yyyy-MM-dd HH:mm:ss")+"|");
}
else{
System.out.print("Number:");
cell.setCellType(CellType.STRING);
System.out.print(cell.getStringCellValue()+"|");
}
break;
case ERROR:
System.out.print("ERROR:数据类型错误"+"|");
break;
}
}
}
}
System.out.println();
}
公式读取
FormulaEvaluator formulaEvaluator = new XSSFFormulaEvaluator((XSSFWorkbook)workbook);
switch (cell.getCellTypeEnum()){
case FORMULA:
System.out.println(cell.getCellFormula());
CellValue cellValue = formulaEvaluator.evaluate(cell);
System.out.println(cellValue.formatAsString());
break;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?