1

「、」で分割されたcsvファイルをスキャンすると、奇妙な出力が得られます。各行の長さに対して、i番目の要素にi +「:」を追加してprintwriterに追加します。元の入力は次のようになります。

8.035156 7.619141 7.105469

7.234375 7.8125 8.244141

6.615234 8.224609 6.361328

それらは実際には「、」で区切られています。

出力は次のようになります

1:8.035156,2:7.619141,3:7.105469,4:7.072266

これも「,」で区切る必要があります。

代わりに、出力は次のようになります。選択範囲をクリックすると、さらに奇妙な時間が表示されます。

01:08.0 02:07.6 03:07.1 04:07.1 05:07.4 06:07.2 07:07.6 08:07.1 09:07.1 10:07.2 
12:04:06 AM

,append ステートメントの最後に文字を追加した場合にのみ、間違った出力が発生します。

public class GeneCsv
{
    public static void main(String[] args) throws IOException
    {
        File file = new File("file.csv");
        FileWriter writer = new FileWriter("/Users/home/fileExpression.csv");
        PrintWriter pw = new PrintWriter(writer);
        Scanner in = new Scanner(file);
        boolean firstLine = true;
        String[] temp = null;
        while (in.hasNextLine())
        {
            if (firstLine == true)
            {
                pw.println(in.nextLine());
                firstLine = false;
                continue;
            }
            else
            {
                String line = in.nextLine();
                temp = line.split(",");
                for (int i = 0; i < temp.length; i++)
                {
                    pw.append(i + ":" + temp[i] + ",");
                }
                pw.append("\n");
            }
        }

        pw.flush();
        pw.close();
        writer.close();
    }
}
4

1 に答える 1

0

コードに問題はありません。問題は、Excel が出力を一連の時間値として解釈していることです。したがって、最初の列の値は1:8.0351561 分 8.035156 秒として読み取られます。実際のデータ出力を見ると、目的の形式に一致することがわかります。

Excel で値をテキストとして扱うには、次のように書式設定する必要があります。

="1:8.035156",="2:7.619141",="3:7.105469",="4:7.072266",

CSVファイルで。先頭=と周囲の引用符でうまくいきます。

Excel が特定のテキスト値を日付に自動的に変換しないようにするも参照してください。

于 2012-05-23T04:02:54.603 に答える