簡體   English   中英

如何寫一個以-開頭的字符串到csv文件中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM