如何使用Java将存入二维数组的表格数据写入Excel xls格式文件
Java 将SLK解析后的表格数据写入XLS格式Excel
首先需要引入处理XLS格式的Apache POI依赖,Maven配置如下:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency>
修改你的主类代码,添加写入XLS的逻辑,完整实现如下:
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 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 java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.Reader; import java.util.List; public class SlkToXls { public static void main(String args[]) throws IOException { SylkParser test = new SylkParser(); Reader reader = new FileReader("file.slk"); List<SylkRecord> parsed = test.parseRecords(reader); SylkSheet sheet = new SylkSheet(parsed); String[][] table = new String[47][8]; // 按矩形格式读取数据到数组 for (int i=1; i<47; i++) { for (int j=1; j<8; j++) { String data = ""; if (sheet.getCell(i,j) != null) { if (sheet.getCell(i,j).valueStr instanceof String) { data = sheet.getCell(i,j).valueStr; } else if (sheet.getCell(i,j).valueNumber instanceof Number) { data = sheet.getCell(i,j).valueNumber.toString(); } } table[i][j] = data; } } // 写入XLS文件逻辑 try (Workbook workbook = new HSSFWorkbook(); FileOutputStream outputStream = new FileOutputStream("output.xls")) { Sheet xlsSheet = workbook.createSheet("SLK转换结果"); // 遍历二维数组写入Excel for (int i = 1; i < table.length; i++) { // Excel行号从0开始,需和原行号对应可调整索引值 Row row = xlsSheet.createRow(i-1); for (int j = 1; j < table[i].length; j++) { Cell cell = row.createCell(j-1); cell.setCellValue(table[i][j]); } } workbook.write(outputStream); } } }
相关说明:
- 用try-with-resources自动管理流资源,不需要手动关闭工作簿和输出流,避免资源泄漏
- 如果需要调整Excel的行号列号起始位置,修改
createRow和createCell的入参即可 - 如果需要保留数字类型的单元格格式而非统一存为字符串,可以判断内容是否为数字后调用
setCellValue的数字重载方法
内容的提问来源于stack exchange,提问作者codeitforfuture
相关产品推荐
相关产品推荐

