1. First we need a util class
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellValue; import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; public class ExcelUtil { public static Cell getCell(Row row, int i) { Cell cell = row.getCell(i); if (null == cell) { cell = row.createCell(i); } return cell; } public static Row getRow(Sheet sheet, int i) { Row row = sheet.getRow(i); if (null == row) { row = sheet.createRow(i); } return row; } public static String getValue(Cell cell) { FormulaEvaluator evaluator = cell.getSheet().getWorkbook() .getCreationHelper().createFormulaEvaluator(); CellValue cellValue = evaluator.evaluate(cell); switch (cellValue.getCellType()) { case Cell.CELL_TYPE_BLANK: return ""; case Cell.CELL_TYPE_STRING: return cellValue.getStringValue(); case Cell.CELL_TYPE_NUMERIC: return Double.valueOf(cellValue.getNumberValue()).toString(); case Cell.CELL_TYPE_BOOLEAN: return Boolean.valueOf(cellValue.getBooleanValue()).toString(); case Cell.CELL_TYPE_ERROR: return String.valueOf(cellValue.getErrorValue()); case Cell.CELL_TYPE_FORMULA: return null; default: return null; } } }
2. Handler
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; public class FlatFileConversionUtil { private static String headers = "aaa~bbb~ccc~ddd"; private static String rowDelimeter = "~"; private static String colDelimeter = ","; public static void convertToFlatFile(Sheet fromSheet, String csvFileName) throws IOException { StringBuilder fileContent = new StringBuilder(); fileContent.append(headers); fileContent.append(rowDelimeter); String contents = readContents(fromSheet); fileContent.append(contents); writeToFile(csvFileName, fileContent.toString()); } /** * Write fileContent to csv file <br/> * * @param csvFileName * @param fileContent * "111,222,333~111,222,333" * @throws IOException */ private static void writeToFile(String csvFileName, String fileContent) throws IOException { BufferedWriter writer = new BufferedWriter(new FileWriter(csvFileName)); String[] lines = fileContent.split(rowDelimeter); for (int i = 0; i < lines.length; i++) { String line = lines[i]; writer.write(line); if (i != (lines.length - 1)) { writer.newLine(); } } writer.flush(); writer.close(); } /** * Output like: * "111,222,333,444,555~111,222,333,444,555~111,222,333,444,555" <br/> * * @param fromSheet * @return */ private static String readContents(Sheet fromSheet) { StringBuilder contents = new StringBuilder(); for (int i = 1; i <= fromSheet.getLastRowNum(); i++) { String line = readRow(fromSheet, i, 109); contents.append(line); if (i != fromSheet.getLastRowNum()) { contents.append(rowDelimeter); } } return contents.toString(); } /** * Output like: "111,222,333,444,555" <br/> * * @param fromSheet * @param rowNum * @param colCount * @return rowData: "data" + colDelimeter + "data" */ private static String readRow(Sheet fromSheet, int rowNum, int colCount) { StringBuilder data = new StringBuilder(); Row row = ExcelUtil.getRow(fromSheet, rowNum); for (int i = 0; i < colCount; i++) { Cell cell = ExcelUtil.getCell(row, i); String cellValue = ExcelUtil.getValue(cell).trim(); data.append(cellValue); if ((colCount - 1) != i) { data.append(colDelimeter); } } return data.toString(); } }
3. Test case
import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.junit.Test; public class ExcelFileConversionTest { @Test public void testConvertToCsv() throws InvalidFormatException, IOException { List<String> fileNameList = new ArrayList<String>(); fileNameList.add("excel_1.xlsx"); for (String fileName : fileNameList) { Workbook wb = WorkbookFactory.create(new File("/" + fileName)); int sheetCount = wb.getNumberOfSheets(); String fileNamePrefix = "ALM_"; String fileNameSuffix = ".csv"; for (int i = 0; i < sheetCount; i++) { Sheet sheet = wb.getSheetAt(i); String csvFileName = getCsvFileName(sheet, fileNamePrefix, fileNameSuffix); FlatFileConversionUtil.convertToFlatFile(sheet, csvFileName); } } } private String getCsvFileName(Sheet sheet, String fileNamePrefix, String fileNameSuffix) { Row row = ExcelUtil.getRow(sheet, 1); Cell cell = ExcelUtil.getCell(row, 0); String cobDate = ExcelUtil.getValue(cell); return fileNamePrefix + cobDate + fileNameSuffix; } }
相关推荐
Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel 文件。在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java ...
在压缩包文件"excelToCsv"中,通常会包含一个示例Java程序,该程序实现了上述步骤,你可以参考它来理解和实践这个过程。通过这个程序,你可以将任意的Excel文件转换为CSV格式,方便后续的数据处理和分析。
在做项目的时候,发现使用POI无法解析以csv文件结尾的文件,虽然csv文件能用Excel打开,但是csv文件没有像Excel一样有规定的电子表格形式,故使用POI无法解析csv文件,在网上找了一下,发现java有提供java csv文件来...
在Java开发中,Apache POI库是处理Microsoft Office文件(如Word、Excel)的强大工具。本文将深入探讨如何使用Java POI生成带有货币格式的Excel文件,这在财务报告和其他需要精确货币显示的应用场景中尤为关键。 ##...
Java POI库是Apache软件基金会开发的一个开源项目,专门用于读写Microsoft Office格式的文件,包括Excel。在Java中,如果你需要导出Excel文件,Java POI是一个非常实用的工具。下面将详细介绍如何使用Java POI来实现...
Java的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件,尤其是Excel(.xlsx)文档。在本示例中,我们将深入探讨如何利用POI库来生成Excel中的图表曲线,这对于数据可视化和报告生成...
在Java编程环境中,Apache POI库是一个非常实用的工具,用于读取、写入和修改Microsoft Office格式的文件,特别是Excel(.xlsx 和 .xls)文件。本教程将详细介绍如何使用JAVA POI库来创建一个包含图片的完整Excel...
Java Poi库是Apache软件基金会开发的一个开源项目,专门用于处理Microsoft Office格式的文件,包括Excel、Word和PowerPoint等。在Java世界中,Poi是解析和操作这些文件的首选工具,尤其在数据导入导出、自动化测试、...
Java Poi 导出excel(支持各种设置字体、颜色、垂直居中)
Java POI是Apache软件基金会下的一个开源项目,主要用于读写Microsoft Office格式的文件,特别是Excel。在Java开发中,当你需要处理Excel数据时,POI库是一个强大的工具。本压缩包包含了一些关键资源,帮助你理解和...
在Java编程环境中,Apache POI库是一个非常重要的工具,它允许开发者读取、写入和修改Microsoft Office格式的文件,尤其是Excel(.xlsx 和 .xls)文件。本教程将深入探讨如何利用Java POI库来实现Excel的导入与导出...
Java POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,尤其是Excel。它提供了丰富的API,使得在Java环境中操作Excel文件变得极其便捷。本文将深入探讨Java POI的使用,包括其核心功能、API使用示例...
Java中的Apache POI库是处理Microsoft Office文档的强大工具,尤其在Excel操作方面。它允许开发者在Java应用程序中创建、修改和读取Excel文件。在进行批量导入和导出Excel数据时,Apache POI是一个非常实用的选择。...
JAVA POI Excel转Html,代码和所需的jar都在压缩包,项目在线预览需求,实现后分享下
Java POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,包括Excel、Word和PowerPoint等。在Java世界中,如果你想对Excel进行读写操作,POI库是不可或缺的工具。下面将详细介绍如何使用Java POI来操作...
Java POI 是一个开源项目,专门用于处理Microsoft Office格式的文件,包括Excel、Word和PowerPoint等。在Java中,如果你需要生成或操作Excel文件,尤其是.xlsx格式(这是Excel 2007及以上版本使用的Open XML格式),...
Java POI库是Apache软件基金会的一个项目,专门用于读写Microsoft Office格式的文件,包括Excel。在Java开发中,我们经常使用POI库来处理Excel数据,如读取、写入和修改Excel文件。本篇文章将详细介绍如何使用JAVA ...
java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。
Java POI导出图片到Excel示例代码详解 Java POI是Java开发中常用的开源库,用于读写Microsoft Office文件格式,包括Excel、Word、PowerPoint等。今天,我们将介绍如何使用Java POI将图片导出到Excel中。 标题解释 ...
Java POI库是Apache软件基金会开发的一个开源项目,专门用于处理Microsoft Office格式的文件,如Word、PowerPoint和尤其在本场景中提到的Excel。它提供了API,使得开发者能够使用Java来读取、写入和修改Excel文件。...