0

Javaからcsvファイルを書き込もうとしています。完全に機能しますが、たとえば 19,4 を csv ファイルに書き込むと、Excel では 19 と表示されます。そこで、19,4 の前に \' を置きます。値は現在数値として表示されていますが、その前に ' があります。Excel の列をクリックして => と入力すると、' が消えます。' が最初から表示されないのはどうすればよいですか?

ソースの例を次に示します (サーブレットから)。

public void doWork(HttpServletRequest リクエスト、HttpServletResponse レスポンス) {

        byte[] fileData = null;
        String buffer = "";

        buffer += "First";
        buffer += ";";
        buffer += "\'";
        buffer += "19,4";
        buffer += ";";
        buffer += "\n";
        buffer += "Second";
        buffer += ";";
        buffer += "\'";
        buffer += "15,1";
        buffer += ";";
        buffer += "\n";
        buffer += "Third";
        buffer += ";";
        buffer += "\'";
        buffer += "1,7";
        buffer += ";";
        buffer += "\n";

        fileData = buffer.getBytes("UTF-8");

        byte[] fileDataWithBOM = new byte[fileData.length+10];
        fileDataWithBOM[0] = (byte)0xef;
        fileDataWithBOM[1] = (byte)0xbb;
        fileDataWithBOM[2] = (byte)0xbf;
        System.arraycopy(fileData, 0, fileDataWithBOM, 3, fileData.length);

        ServletOutputStream out = null;
        String fileName = "Accounting.csv";


        try {
            response.setContentType("text/csv");
            String disposition = "attachment; fileName="+fileName;
            response.setHeader("Content-Disposition", disposition);
            response.setCharacterEncoding("UTF-8");

            out = response.getOutputStream();

            int length = fileData.length;
            response.setContentLength(length);

            out.write(fileData);
            out.flush();
            out.close();

        } catch (Exception e) {
            throw e;
        } finally {
            try {
                if (out != null)
                    out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
4

2 に答える 2

1

CSV の問題ではなく、Excel の問題です。Excel のテキスト インポート ウィザードを使用することをお勧めします。これにより、インポートされたデータをフォーマットする方法を選択できます。

CSV は、フォーマットに関する情報を持たない単なるデータ表現形式です。消費するアプリケーションはそれをフォーマットする必要があります。データとメタデータを一緒に保存する必要がある場合は、他の形式を選択するか、CSV ファイルのどこかにメタデータを「エンコード」する必要があります (たとえば、CSV ファイルの最初の行をこれに使用できますが、私は何も知りませんExcelにそれを使用するように指示する方法-すべてのCSVをスクリプトとプログラムで処理します)。

注: Excel 2007 を使用しています。

于 2013-10-21T13:14:15.860 に答える