【发布时间】:2017-03-06 16:31:35
【问题描述】:
我有一个简单的问题。我制作了生成 jtable 的程序,你可以用一些值填充这个表,然后将整个表保存到 excel 中。
一开始我定义了文件:
文件 f = new File("C:\Users\Gregory\Desktop\test.xls");
这里是导出 JTable 到 excel 的类:
public void exportTable(JTable table, File file) 抛出 IOException { 表模型模型 = table.getModel(); FileWriter out = new FileWriter(file);
for (int i = 0; i < model.getColumnCount(); i++) { out.write(table.getColumnModel().getColumn(i).getHeaderValue() + \t"); } out.write("\n"); for (int i = 0; i < model.getRowCount(); i++) { for (int j = 0; j < model.getColumnCount(); j++) { if (model.getValueAt(i, j) != null) { out.write(model.getValueAt(i, j).toString() + "\t"); } else if (model.getValueAt(i, j) == null) { out.write("\t"); } } out.write("\n"); }out.close();
我无法将此表导入 java 程序。我收到错误: jxl.read.biff.BiffException:无法识别 OLE 流
当我打开此文件时,我收到一条消息,指出文件的格式与其扩展名 (.xls) 不同。所以我点击“另存为”,建议的扩展名是.txt。我将文件保存为 .xls(似乎与 java 程序保存的文件相同),然后我可以将 JTable 从该 excel 导入到 java 程序而没有任何错误。谁能建议如何使用正确的扩展名保存文件?
【问题讨论】:
-
具有 XLS 扩展名的文件具有自定义格式。它不会将数据存储为文本。这就是为什么您有“另存为”选项的原因。您可以将自定义格式转换为文本格式。尝试将文件保存为“.csv”(您可能需要更改分隔符,或者将其保存为“.txt”。
-
但是我对这个程序的设想是将 JTable 以与 JTable 中相同的格式导出到 Excel - 逐个单元格,然后将这些单元格导出到程序并创建 JTable。可能吗?一般来说-它可以按我的意愿工作,但我必须手动单击文件“另存为”并将文件另存为“.xls”-我可以从此文件创建jtable。
-
你曾经用编辑器查看过“.xls”文件吗???它不包含您在“.cvs”或“.txt”文件中看到的文本。如果你想阅读微软制作的“.xls”规范然后创建文件,祝你好运。