Java 如何将JTable数据导出到CSV文件中
我正在寻找一种方法,将带有数据的JTable导出到.csv文件中。但是我没有找到一个好的方法。它工作并生成csv文件。但有一个问题。当jTable列中有这样的数据时Java 如何将JTable数据导出到CSV文件中,java,swing,csv,jtable,export-to-csv,Java,Swing,Csv,Jtable,Export To Csv,我正在寻找一种方法,将带有数据的JTable导出到.csv文件中。但是我没有找到一个好的方法。它工作并生成csv文件。但有一个问题。当jTable列中有这样的数据时 |column 1|column 2| ------------------- |Java, C#|PHP | 结果是, column 1,column2, Java,C#,PHP, 因此问题id只有2列和2个数据列,但对于CSV文件,有3个数据列。将该CSV文件导入Excel工作表时,它是完全错误的。数据被转移到不同的
|column 1|column 2|
-------------------
|Java, C#|PHP |
结果是,
column 1,column2,
Java,C#,PHP,
因此问题id只有2列和2个数据列,但对于CSV文件,有3个数据列。将该CSV文件导入Excel工作表时,它是完全错误的。数据被转移到不同的位置
那么,在Java中有没有其他方法来解决这个问题,或者有什么方法可以避免这个问题呢?
提前谢谢你的帮助!致以最良好的祝愿
我使用以下代码。
public void ExportToCSVfile(JTable table) throws IOException, ClassNotFoundException
{
Writer writer = null;
DefaultTableModel defaultTableModel = (DefaultTableModel) table.getModel();
int Row = defaultTableModel.getRowCount();
int Col = defaultTableModel.getColumnCount();
try {
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("file.csv"), "utf-8"));
StringBuffer bufferHeader = new StringBuffer();
for (int j = 0; j < Col; j++) {
bufferHeader.append(defaultTableModel.getColumnName(j));
if (j!=Col) bufferHeader.append(", ");
}
writer.write(bufferHeader.toString() + "\r\n");
for (int i = 0 ; i < Row ; i++){
StringBuffer buffer = new StringBuffer();
for (int j = 0 ; j < Col ; j++){
buffer.append(defaultTableModel.getValueAt(i,j));
if (j!=Col) buffer.append(", ");
}
writer.write(buffer.toString() + "\r\n");
}
} finally {
writer.close();
}
}
public void ExportToCSVfile(JTable表)抛出IOException、ClassNotFoundException
{
Writer=null;
DefaultTableModel DefaultTableModel=(DefaultTableModel)table.getModel();
int Row=defaultTableModel.getRowCount();
int Col=defaultTableModel.getColumnCount();
试一试{
writer=newbufferedwriter(newoutputstreamwriter(newfileoutputstream(“file.csv”),“utf-8”);
StringBufferBufferHeader=新的StringBuffer();
对于(int j=0;j
那么,在Java中有没有其他方法来解决这个问题,或者有没有其他方法来避免这个问题呢
我不知道CSV格式文件的所有规则,但我相信对于一个单元格包含“,”的简单情况,您只需划界单元格的整个文本即可
因此,文件的输出应该是:
column 1,column2,
"Java,C#",PHP,
这很容易验证,您只需创建一个简单的电子表格,其中单元格包含逗号,然后将电子表格导出为.csv文件,并在文本编辑器中检查文件格式
我认为您可以用“…”分隔所有数据,即使它不包含逗号,但您需要验证这一点
因此,您需要修改导出代码以包含分隔符。不要使用您自己的角色,使用适当的-要求比在两者之间粘贴一个
,
更复杂values@HasithaMJayawardana,我们不是来为您编写代码的。关于这个建议,你有什么不明白的?作为一个具体问题,如果建议不明确。您正在使用StringBuffer。您所需要做的就是在从表格模型中获得的值之前和之后,在黄油上加上一个双引号。@HasithaMJayawardana,很高兴这个建议对您有所帮助。别忘了“接受”答案,这样人们就知道问题已经解决了。我尝试将其导出为Excel文件,而不是CSV。我认为这也会起作用。但我没有试过这个。谢谢你的回答。@HasithaMJayawardana但我没有试过这个。
-为什么不?这是你最初发布的两行额外的代码。