【问题标题】:How to set column names如何设置列名
【发布时间】:2026-01-21 11:55:01
【问题描述】:

我正在为我的应用程序使用 Apache POI,我想设置列名而不是“A、B、C...”

我使用以下代码,但它只在第一行添加数据:

 public void createHeaderRow(HSSFSheet sheet, List<String> headerRowList) {
    HSSFRow headerRow = sheet.createRow(0);
    for(int i=0;i<headerRowList.size();i++){
        HSSFCell cell = headerRow.createCell((short) i);
        cell.setCellValue(headerRowList.get(i).toString());
    }
}

有什么想法吗?

【问题讨论】:

    标签: java excel apache-poi


    【解决方案1】:

    坏消息:AFAIK excel 不能做任何不同于 A、B、C 的事情。主要原因:列名和行名不包含信息,它只是一个编号。假设您要打印包含这些名称的文档:Excel 不知道格式,也不知道边框,甚至不知道单元格的宽度/高度。

    您有以下选择:

    • 使用使用数据库布局的 MS Access(例如,字段名称作为列名称)
    • 修复视图中的第一行并将其格式化为表格标题。 Excel 的表格自动格式化功能也是如此。

    【讨论】:

      【解决方案2】:

      例如:

      JFileChooser save = new JFileChooser();
              save.setDialogTitle("Save file");
              int chooise = save.showSaveDialog(null);
      
              File file = null;
              if(chooise == JFileChooser.APPROVE_OPTION){
                  file = save.getSelectedFile();
              }
      
              FileOutputStream fileOut;
              fileOut = new FileOutputStream(file.getAbsolutePath() + ".xls");
              HSSFWorkbook workbook = new HSSFWorkbook();
              HSSFSheet worksheet = workbook.createSheet("Workbook");
              Row row1 = worksheet.createRow((short)0);
              //Set columt names
              row1.createCell(0).setCellValue("Column Name 0");
              row1.createCell(1).setCellValue("Column Name 1");
      

      等等

      【讨论】: