You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:06:01