[英]How to write an ArrayList<String[]> to a .csv file in Java?
[英]how to write a string which starts with - into csv file?
我正在嘗試將數據寫入CSV文件。
以-
開頭的字符串值將轉換為#NAME?
寫入后自動打開csv文件時自動生成。 例如,如果我寫test
它將正確顯示,但是當我寫-test
,值將是#NAME?
當我打開csv文件時。 這不是代碼問題,但是csv文件會自動將以-
開頭的值更改為error(#NAME?)
。 我如何以編程方式更正此問題。 下面是代碼,
public class FileWriterTest {
public static void main(String[] args) {
BufferedWriter bufferedWriter = null;
File file = new File("test.csv");
try {
bufferedWriter = new BufferedWriter(new FileWriter(file));
List<String> records = getRecords();
for (String record : records) {
bufferedWriter.write(record);
bufferedWriter.newLine();
}
bufferedWriter.flush();
System.out.println("Completed writing data to a file.");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (bufferedWriter != null)
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static List<String> getRecords() {
List<String> al = new ArrayList<String>();
String s1 = "test";
String s2 = "-test";
al.add(s1);
al.add(s2);
return al;
}
}
你能幫忙嗎?
在正式的CSV標准中 ,您可以通過在字段值周圍使用引號( "
)來實現此目的。它們是文本定界符(與其他類型的值(如數字值)相反)。
聽起來您正在使用Excel。 您可能需要啟用"
作為文本定界符/指示符。
更新:如果雙擊.csv以在Excel中打開它,即使這樣也不起作用。 您必須打開一個工作簿,然后將CSV數據導入其中。 (真可悲,...)
excel有問題。 當您在excel中打開CSV文件時,它會嘗試自動確定通常會失敗的單元格類型。 CSV文件沒問題,編輯器不是;)
您可以右鍵單擊該字段,選擇“設置單元格格式”,然后在其中創建一個文本文件(並且可能需要刪除自動插入的“ =”符號)。 或者,您可以進入數據-從文本/ CSV中打開CSV文件,然后在向導中選擇適當的列類型。
我有一個相對較舊的Excel版本(2007),以下代碼可以正常運行:
將文本放在雙引號之間,並以等號開頭。
即, -test
變為="-test"
。
因此,您的文件將如下所示:
test1,test2,test3
test4,="-test5",test6
UPDATE
同樣適用於Excel-2010。
正如Veselin Davidov所提到的那樣,這將破壞csv標准,但我不知道這是否是一個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.