java - 将java表导出到excel时出现问题

标签 java excel swing jtable filewriter

我在将 Jtable 从程序导出到 Excel 时遇到问题,我正在使用此方法,因为我不允许使用 POI

public void exportTable(File file)throws IOException{
    FileWriter out = new FileWriter(file);
    BufferedWriter bw = new BufferedWriter(out);
    for(int i = 0; i < myTable.getColumnCount(); i++){
        bw.write(myTable.getColumnName(i) + "\t");
    }
    bw.write("\n");
    for(int i = 0; i < myTable.getRowCount(); i++){
        for(int j = 0; j < myTable.getColumnCount(); j++){
            bw.write(myTable.getValueAt(i, j).toString() +"\t");
        }
        bw.write("\n");
    }
    bw.close();
    JOptionPane.showMessageDialog(rootPane, "Your table have been exported to " + file);
}

我正在使用这个方法:

try{
    Date date = new Date();
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss");
    String desktop = System.getProperty("user.home") + "/Desktop";
    String name = desktop + "/MyTable" + dateFormat.format(date)+ ".csv";
    exportTable(new File(name));
}catch(IOException e){
    e.getMessage();
}

嗯,这很好用,但问题是一行中的每一列都写在第一列中,而不是写在不同的列中,我认为“\t”可以解决这个问题,但没有,知道如何解决这个问题吗?

最佳答案

所以,您的代码工作正常,所以问题出在您的代码中的其他位置,而您没有与我们共享。考虑提供 runnable example这说明了你的问题。这不是代码转储,而是您正在执行的操作的示例,它突出显示了您遇到的问题。这将减少困惑并获得更好的响应

不过,我建议您看看 The try-with-resources StatementStringJoiner这将使您的生活更轻松

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.StringJoiner;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Test {

    public static void main(String[] args) {
        new Test();
    }

    public Test() {
        DefaultTableModel model = new DefaultTableModel(0, 10);
        for (int row = 0; row < 10; row++) {
            String[] cols = new String[10];
            for (int col = 0; col < cols.length; col++) {
                cols[col] = row + "x" + col;
            }
            model.addRow(cols);
        }

        try {
            exportTable(new JTable(model), new File("bananas.csv"));
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    public void exportTable(JTable myTable, File file) throws IOException {
        try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {
            StringJoiner sj = new StringJoiner("\t");
            for (int i = 0; i < myTable.getColumnCount(); i++) {
                sj.add(myTable.getColumnName(i));
            }
            bw.write(sj.toString());
            bw.newLine();
            for (int i = 0; i < myTable.getRowCount(); i++) {
                sj = new StringJoiner("\t");
                for (int j = 0; j < myTable.getColumnCount(); j++) {
                    sj.add(myTable.getValueAt(i, j).toString());
                }
                bw.write(sj.toString());
                bw.newLine();
            }
//          JOptionPane.showMessageDialog(rootPane, "Your table have been exported to " + file);
        }
    }

}

哪些输出

A   B   C   D   E   F   G   H   I   J
0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9
1x0 1x1 1x2 1x3 1x4 1x5 1x6 1x7 1x8 1x9
2x0 2x1 2x2 2x3 2x4 2x5 2x6 2x7 2x8 2x9
3x0 3x1 3x2 3x3 3x4 3x5 3x6 3x7 3x8 3x9
4x0 4x1 4x2 4x3 4x4 4x5 4x6 4x7 4x8 4x9
5x0 5x1 5x2 5x3 5x4 5x5 5x6 5x7 5x8 5x9
6x0 6x1 6x2 6x3 6x4 6x5 6x6 6x7 6x8 6x9
7x0 7x1 7x2 7x3 7x4 7x5 7x6 7x7 7x8 7x9
8x0 8x1 8x2 8x3 8x4 8x5 8x6 8x7 8x8 8x9
9x0 9x1 9x2 9x3 9x4 9x5 9x6 9x7 9x8 9x9

已更新

我想我终于理解了您的难题,Excel 用于提示您如何描述 CSV,但似乎不再这样做(至少对我来说不是)

因此,将 StringJoiner sj = new StringJoiner("\t");sj = new StringJoiner("\t"); 替换为 StringJoiner sj = new StringJoiner(",");sj = new StringJoiner(","); 分别

Excel

关于java - 将java表导出到excel时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33382266/

相关文章:

excel - 使用 VBA 在 Excel 范围内查找第一个公式的最快方法是什么?

java - GridLayout 错误

java - Primefaces 使用 JSF 中的模板更新属性

java - Spring Boot - ErrorPageFilter 找不到 RequestDispatcher

Excel/VBA 基本函数问题

java - 在 Jython 中绘制像素

java - 如何旋转Swing文本?

Java + Mongo +Morphia - 在 mongo 数组中查找正则表达式

java - 如何调试 JAXB 中的编码(marshal)处理?

r - 如何将大数据导出到 Excel