【问题标题】:how to write to csv with a leading zero?如何用前导零写入csv?
【发布时间】:2012-03-19 02:56:00
【问题描述】:

我希望将一些数据写入 CSV 文件。我输入信息的一列是带前导零的整数形式,例如:0000000013。

由于某种原因,excel 将其“转换”为 13,我必须使用 10 位数字 (0000000013)。谁能告诉如何规避这个问题?

String value = "0000000013"; //I tried String.format("%8d", 13) doesn't work
printWriter.println(value);

谢谢!!!

【问题讨论】:

  • 这一行不应该编译:String value = 0000000013;
  • 你可以在写入之前格式化单元格并将其类型设置为文本。

标签: java string csv format printwriter


【解决方案1】:

在行首添加一个单引号'。这会通知 Excel 不要将该值视为数字。

【讨论】:

  • @mcfinnigan 这不是准确的答案。如果我不想在 Excel 中看到 ' 怎么办?应该有一些方法来处理这个问题。我正在寻找 apache poi 解决方案。
【解决方案2】:

将制表符附加到数字

例如:“\t”+“01234”

【讨论】:

    【解决方案3】:

    更好的方法是将您的号码打印为 ="0000000013"

    String value = "0000000013"; 
    printWriter.println("=\"" + value + "\"");
    

    【讨论】:

      【解决方案4】:

      当您在 excel 2007 中打开一个 CSV 文件时,它会打开文本导入向导。在步骤 3 中,您可以将列的列数据格式指定为“文本”。只需在“数据预览”窗格中选择适当的列标题。然后在“列数据格式”窗格中选择“文本”单选按钮。

      【讨论】:

        【解决方案5】:

        试试:

        String.format("%08d", 13)
        

        请注意格式字符串中的0,它告诉Java 在数字前加上零,直到字段中指示的长度(在本例中为8)。

        【讨论】:

          【解决方案6】:

          你应该使用:

          String.format("%08d", 13);
          

          【讨论】:

            猜你喜欢
            • 2015-04-24
            • 2021-08-25
            • 2019-12-17
            • 1970-01-01
            • 1970-01-01
            • 2019-10-25
            • 2011-10-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多