【问题标题】:Java - Open CSV - .csv to .xls extensionJava - 打开 CSV - .csv 到 .xls 扩展名
【发布时间】:2026-02-22 08:25:01
【问题描述】:

我们使用 Java 中的 Open CSV 库生成了一个 .csv 文件。我们的要求是将扩展名从 .csv 更改为 .xls 。

当我们通过在 java 中将文件名重命名为 .xls 来盲目地更改扩展名(在 java 代码中)时,数据未正确对齐或格式化。

在 .csv 文件中,当我们使用 excel 值打开它时,表格内的值已正确对齐。但是当我们更改为 .xls 并打开它时,所有内容都是逗号分隔的值并填充在一列内,即表中的值不会填充在相应的列下。请在屏幕截图下方找到。

enter image description here

【问题讨论】:

  • csv != xls - 如果你想要 real xls,请使用 Apache POI
  • 你想“更改扩展名”是什么意思?您真的有一个 .csv 文件要转换为.xls 吗?或者您想将写入 .csv 文件的应用更改为将相同数据写入 .xls 文件的应用?
  • 我们有一个 .csv 文件,我们想将其转换为 .xls。
  • CSV 到 XLS 的转换将要求您使用 API 读取 CSV 以使用不同的 API(很可能是相同的 API)将值写入 XLS,但数据不存储两种扩展方式相同。 Apache POI 是 XLS 的明显选择
  • 所以只需将其导入 Excel,然后以 .XLS 格式保存。 Excel 中的帮助应该能够告诉你如何做到这一点。无需 Java 编程。

标签: java excel csv opencsv


【解决方案1】:

你应该寻找 vbs 脚本,我知道我正在使用我找到的那些脚本之一做相反的(xlsx 到 csv)here 所以我想应该可以做相反的事情,我希望你在那里找到你的解决方案!

这是一个将 xlsx 转换为 csv 的脚本:

if WScript.Arguments.Count < 2 Then
WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
Wscript.Quit
End If
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
oBook.SaveAs WScript.Arguments.Item(1), 6
oBook.Close False
oExcel.Quit

【讨论】:

    【解决方案2】:

    那么为什么不在 excel 中打开 .csv 文件,然后执行“另存为”并为文件类型选择 excel 电子表格。

    那是您缺少的部分。更改扩展名不会更改文件类型。您只是在更改大多数计算机查看文件的方式。在文本编辑器中打开一个真正的 excel 电子表格,我保证你会看到比逗号分隔值更多的东西。

    【讨论】:

      【解决方案3】:

      我认为您需要为 .xls 使用“Apache POI - Java API”

      【讨论】:

      • 感谢您的回复。我们希望它使用开放的 CSV 而不是 Apache POI。
      • @user1292755 "Opencsv 是一个非常简单的 Java csv(逗号分隔值)解析器库" 所以不是 XLS api