【问题标题】:Printing tab to a csv file将选项卡打印到 csv 文件
【发布时间】:2015-04-18 13:49:15
【问题描述】:

我想将制表符打印到 csv 文件中,以便能够使用 java PrintWriter 使用 Excel 准确打开它,但它似乎不会将此字符打印到文件中。 我打印如下:

PrintWriter pw = new Printwriter(new FileWriter(file));
pw.print(myvariable+"\t")

【问题讨论】:

  • 写完后要关闭PrintWriter吗?
  • 是的,我是。这只是一个sn-p的代码
  • 您如何确定它不起作用?制表符后的同一行是否有任何内容?
  • 当我用 excel 打开文件时,我期望的结果是在不同的单元格中有数据。但他们都在一个牢房里。字符串 "data1\tdata2\t" 的含义,data1 和 data2 应该在不同的单元格中,但我最终将它们放在 1 个单元格中。 ..实际数据后的同一行中没有任何内容
  • 我刚刚检查过,如果我将文件扩展名从 .csv 更改为 .xls,它会在 Excel 中正确打开(不同单元格上的数据)......但我仍然不明白这个问题

标签: java printwriter


【解决方案1】:

默认行为:

我刚刚检查过,如果我将文件扩展名从 .csv 更改为 .xls 在excell中正确打开(不同单元格上的数据)......但我 还是不明白问题

.csv = comma separated value 因此,如果您想使用.csv,只需使用字符, 而不是\t


告诉 Excel 您当前文件的分隔符

.csv 的第一行添加:sep=\t,这将告诉 excel 将其用作分隔符。 (来源:https://superuser.com/a/420025/438867


代码示例可以在这里找到github repo

更改所有 .csv 文本文件中的分隔符

根据support.office.com

在 Microsoft Windows 中,单击开始按钮,然后单击控制面板

打开区域和语言选项对话框。

执行以下操作之一:

在 Windows Vista 中,单击格式选项卡,然后单击自定义此格式

在 Windows XP 中,单击 区域选项* 选项卡,然后单击 自定义

列表分隔符框中键入新的分隔符。

点击确定两次。

【讨论】:

    【解决方案2】:

    您在那里遇到问题似乎很奇怪,我建议您为此使用库而不是滚动您自己的库,这样您就不会遇到转义等问题。

    https://commons.apache.org/proper/commons-csv/

    通过创建一个 FileWriter,您并没有向 Java 指定您希望写入文件的字符编码格式,因此它将是运行代码的机器的默认格式(因此您将在 Mac 上获得不同的行为vs Linux vs Windows)——这可能不是你想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 2016-12-12
      • 1970-01-01
      相关资源
      最近更新 更多