java - 将 Java Swing JTable 标题导出到 Excel

标签 java excel swing jtable

在我的应用程序中,我已将表格内容导出到 Excel,但结果不包括表格标题。想知道如何将 JTable 导出到 Excel(包括表头)?我尝试了几种方法,但仍然看不到excel中的表头,以下是我的代码:

    defautTableModel = new DefaultTableModel(null,columnNames){
        @Override
        public boolean isCellEditable(int row, int column) {
            return false;
        }
    };

    // the jTable row are generated dynamically.
    final JTable jTable = new JTable(defautTableModel);

    jTable.setLocation(20,60);
    jTable.setSize(950,450);
    jTable.setRowHeight(25);

    JTableHeader jTableHeader = jTable.getTableHeader();
    jTableHeader.setLocation(20,30);
    jTableHeader.setSize(950,30);
    jTableHeader.setFont(new Font(null, Font.BOLD, 16));
    jTableHeader.setResizingAllowed(true);
    jTableHeader.setReorderingAllowed(true);

    jTable.add(jTableHeader);

    JScrollPane tablePanel = new JScrollPane(jTable);
    tablePanel.setLocation(10,10);
    tablePanel.setSize(960,400);

    // export data to excel method 

    public void exportToExcel(){
    XSSFWorkbook wb = new XSSFWorkbook();
    XSSFSheet sheet = wb.createSheet();
    for (int i = 0; i < defautTableModel.getRowCount(); i++) {
        Row = sheet.createRow(i);
        for (int j = 0; j < defautTableModel.getColumnCount(); j++) {
            Cell = Row.createCell(j);
            try {
                if (defautTableModel.getValueAt(i,j) != null){
                    Cell.setCellValue(defautTableModel.getValueAt(i,j).toString());
                    FileOutputStream fileOut = new FileOutputStream(Constant.Path_TestData_Output);
                    wb.write(fileOut);
                    fileOut.flush();
                    fileOut.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

最佳答案

您仅访问数据列,您需要先获取标题列。 您可以通过不同的方式来实现它,或者使用方法 getColumnName 正如 ThomasEdwin 在他的评论中提到的,或者使用您提供给模型构造函数的 columnNames 变量:new DefaultTableModel(null,columnNames)

希望对你有帮助

关于java - 将 Java Swing JTable 标题导出到 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48076109/

相关文章:

java - 如何在 IE 中使用 selenium 记录测试用例

java - 生成自身实例的静态类

java - 将字符串转换为 json 对象并获取一些数据

java - 如何将 JTextArea 设置为固定大小

java - 将带有图像的 JLabel 添加到 JList 以显示所有图像

java - 等待后台进程结束,并使用来自不同类的 SwingWorker

python - 如何使用Python从Excel文件中读取一列?

arrays - 将多维数组写入excel vba

excel - 我们是否应该总是/有时在 ".Cells"循环中使用 "For Each"属性

java - 如何将 JLabel 和 JTextField 放在图像之上?