这里有人知道在Java中将csv文件转换为xls或xlsx文件的任何快速,干净的方法吗?
我已经有一些东西可以管理csv文件,并且我需要与其他程序具有额外的兼容性。
除了包名称外,示例代码始终受到人们的赞赏。
非常感谢,
贾斯汀
到目前为止,这是我的代码。我需要从行中删除返回值(“ \ n”)。我的某些单元格包含多行信息(一个列表),因此我可以在csv中使用“ \ n”来表示
单元格中的 多行,但是xls会将它们视为我的意思是放在新 行上 。
该代码是从Internet修改的,目前有点混乱。您可能会注意到一些过时的方法(如2004年编写的),请确保忽略可怕的return语句。我目前仅在使用Sop进行测试,稍后再进行清理。
package jab.jm.io;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class FileConverter {
public static String ConvertCSVToXLS(String file) throws IOException {
if (file.indexOf(".csv") < 0)
return "Error converting file: .csv file not given.";
String name = FileManager.getFileNameFromPath(file, false);
ArrayList<ArrayList<String>> arList = new ArrayList<ArrayList<String>>();
ArrayList<String> al = null;
String thisLine;
DataInputStream myInput = new DataInputStream(new FileInputStream(file));
while ((thisLine = myInput.readLine()) != null) {
al = new ArrayList<String>();
String strar[] = thisLine.split(",");
for (int j = 0; j < strar.length; j++) {
// My Attempt (BELOW)
String edit = strar[j].replace('\n', ' ');
al.add(edit);
}
arList.add(al);
System.out.println();
}
try {
HSSFWorkbook hwb = new HSSFWorkbook();
HSSFSheet sheet = hwb.createSheet("new sheet");
for (int k = 0; k < arList.size(); k++) {
ArrayList<String> ardata = (ArrayList<String>) arList.get(k);
HSSFRow row = sheet.createRow((short) 0 + k);
for (int p = 0; p < ardata.size(); p++) {
System.out.print(ardata.get(p));
HSSFCell cell = row.createCell((short) p);
cell.setCellValue(ardata.get(p).toString());
}
}
FileOutputStream fileOut = new FileOutputStream(
FileManager.getCleanPath() + "/converted files/" + name
+ ".xls");
hwb.write(fileOut);
fileOut.close();
System.out.println(name + ".xls has been generated");
} catch (Exception ex) {
}
return "";
}
}
不知道您是否已经知道这一点,但是:
.csv
直接读取文件,因此您所做的任何转换都只会受到那些“天才”用户的礼貌。.csv
文件中找到的信息,这将使其变得更加有用。换句话说,CSV是一种“哑”格式,将其转换为.xls
(可能)会增加文件大小,但不会使该格式更智能。柯蒂斯关于POI的建议也是我想到的第一件事。
如果要在Windows计算机上进行此转换,则可以选择另一种替代方法,即Jacob,它是Java-
COM桥,可让您从Java程序有效地远程控制Excel,以便执行诸如打开文件并保存到其他文件的操作。格式,甚至可以应用一些格式更改等。
最后,在INSERT
通过JDBC-
ODBC桥访问的Excel工作表中(通过JDBC)执行SQL方面,我也取得了一些成功。即ODBC可以使Excel文件看起来像数据库。但是,它不是很灵活,您不能要求数据库创建任意命名的.XLS
文件。
编辑:
在我看来,好像readLine()
已经没有给您完整的线条。如何知道回车不是行终止符?您应该能够在readLine()之后立即使用调试打印语句验证这一点。
如果确实如此,那将很烂,因为前进的道路将是您
这两种选择都是您可能不期望的工作。
问题内容: @Before可能会有一些重复的问题建议,我不认为可能是这种情况,请先阅读本章,我会尽量简短。标题给出了基本思路。 这是一个XML示例(案例1): 这是一个XML示例(案例2): 我从Google借用了这种XML,无论如何,我的对象并不总是相同的,有时还有像case2这样的额外元素。现在,我想从两种情况下生成这样的CSV: 这第一行是标头,它也应包含在csv中。我今天有一些有用的指向s
我应该使用什么API将Java对象转换为CSV。我可以使用google gson将java对象转换为CSV格式吗?
问题内容: 嗨,我有一个csv叫做。我试图逐行读取csv并将值转换为哈希键值对。这是代码:- csv文件如下:- 当我运行此代码时,出现此错误:- 谁能帮助我修复代码并找出程序中的错误? 问题答案: 在字符串中,当你把它分解的第一次只包含如没有在这样就会导致异常 如果不需要1,2等。可以查看以下代码:
问题内容: 我有一组CSV数据要转换为XML。代码看起来不错,但是输出不够完美。它忽略了一些列,因为它们没有值,并且产生了很长的XML数据行,而不是破坏它。 这是我的CSV数据示例: 而我的代码: 当对以上数据执行此代码时,将产生: 我本人以这种形式安排它,但是输出结果很长。产生的输出应为: 问题答案: 我同意Kennet。 我只是添加了 这在元素之间添加了新行,并允许缩进。 更新 首先,我们要介
问题内容: 我想将从下面的脚本中获取的HTML表转换为CSV文件,但是出现如下类型错误: TypeError:序列项0:预期的字符串,找到标记 将其转换为CSV文件的最简单方法是什么?我尝试为: 但它写了“无” HTML是这样的: 问题答案: 这是csv lib的工作,将每一个td放入每一行并提取文本,它将处理每一行中缺少值的地方: 与您在页面上看到的表格完全匹配的表格: 如果您想使用字幕: 但是
问题内容: 有谁知道是否有可以让我将XLS最好转换为JSON的应用程序? 我还将为CSV转换程序做准备,因为如果周围什么都没有的话,我可能最终不得不写自己。 问题答案: 这对我来说效果很好,不需要上传文件: https://github.com/cparker15/csv-to- json?files=1