88

レポートを CSV ファイルとして作成します。Excel でファイルを開こうとすると、セルの内容に基づいてデータ型が推測され、それに応じて再フォーマットされます。

たとえば、CSV ファイルに

...,005,...

その後、Excel はそれを 5 と表示します。これを上書きして 005 を表示する方法はありますか?

ユーザーがCSVファイルをダブルクリックして開くことができるように、ファイル自体に何かをしたいと思います。

エクセル2003を使用しています。

4

16 に答える 16

130
于 2008-09-26T21:23:58.880 に答える
30

CSV を使用せず、SYLK を使用してください。
http://en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK)

書式設定をより詳細に制御でき、Excel は内容を調べてフィールドの種類を推測しようとしません。少し複雑に見えますが、非常に小さなサブセットを使用することで解決できます。

于 2008-09-26T02:49:19.490 に答える
14

これは、Microsoft Office 2010、Excel バージョン 14 で機能します。

「ファイル自体に何かをする」というOPの設定を読み間違えました。インポートを直接フォーマットするソリューションが必要な人のために、私はまだこれを保持しています

  1. 空白の (新しい) ファイルを開きます (ファイル -> ワークブックから新規作成)。
  2. インポート ウィザードを開きます (データ -> テキストから)。
  3. .csv ファイルを選択してインポート
  4. ダイアログ ボックスで [区切り記号付き] を選択し、[次へ] をクリックします。
  5. 区切り文字を選択し (「カンマ」以外のすべてのチェックを外します)、テキスト修飾子 (おそらく {None}) を選択し、[次へ] をクリックします。
  6. [データ プレビュー] フィールドで、テキストにする列を選択します。強調表示する必要があります。
  7. [列データ形式] フィールドで、[テキスト] を選択します。
  8. 完了をクリックします。
于 2012-05-15T21:27:15.073 に答える
2

実際、少なくとも Office 2003 以降では、Excel スプレッドシートを XML ファイルとして保存できることを発見しました。したがって、XML ファイルを生成できます。それをダブルクリックすると、Excel で開かれます。SYLK と同じレベルの制御を提供しますが、XML 構文はより直感的です。

于 2008-09-26T04:29:50.717 に答える
2

範囲をテキストとしてフォーマットするだけです。

また、数値形式とそのプログラミング方法に関する素晴らしい記事もここにあります。

于 2008-09-26T02:10:23.327 に答える
2

セルに改行なしのスペースを追加すると役立つ場合があります。例えば: "firstvalue";"secondvalue";"005 ";"othervalue"

Excel がそれをテキストとして処理することを強制し、スペースは表示されません。Windows では、alt+0160 を押すことで改行なしのスペースを追加できます。詳細については、こちらを参照してください: http://en.wikipedia.org/wiki/Non-breaking_space

Excel 2010 で試してみました。これが、この問題の適切な解決策をまだ探している人々に役立つことを願っています。

于 2013-10-09T14:01:04.743 に答える
1

インポートするCSVファイルのセル内に改行がある場合、テキストインポートウィザードの方法は機能しません。このメソッドは、このシナリオを処理します(少なくともタブ区切りのデータを使用)。

  1. 新しいExcelファイルを作成する
  2. Ctrl+Aですべてのセルを選択
  3. [数値形式]コンボボックスで、[テキスト]を選択します
  4. タブ区切りファイルをテキストエディタで開く
  5. すべて選択し、コピーしてExcelに貼り付けます
于 2011-04-06T15:18:24.720 に答える
1

csv を oleDB にロードし、推論されたすべてのデータ型を強制的に文字列にします

私は同じ質問をして、コードで答えました。

基本的に、csv ファイルがロードされると、oledb ドライバーは仮定を行います。どのような仮定を行うべきかを伝えることができます。

私のコードはすべてのデータ型を強制的に文字列にします...スキーマを変更するのは非常に簡単です。私の目的のために、私は xslt を使用して ti を希望どおりに取得しましたが、さまざまなファイルを解析しています。

于 2009-12-22T14:05:46.327 に答える
1

ファイルをインポートするときに、列の種類を選択できると思います。数値ではなくテキストにします。現時点では、チェックするコピーが目の前にありません。

于 2008-09-26T02:10:34.810 に答える
1

これは一日中私を夢中にさせていました (実際には、CSV ファイルを開く前に Excel の列の種類を制御することはできません)。

        'Convert .csv file to .txt file.
        FileName = ConvertToText(FileName)

        Dim ColumnTypes(,) As Integer = New Integer(,) {{1, xlTextFormat}, _
                                                        {2, xlTextFormat}, _
                                                        {3, xlGeneralFormat}, _
                                                        {4, xlGeneralFormat}, _
                                                        {5, xlGeneralFormat}, _
                                                        {6, xlGeneralFormat}}

        'We are using OpenText() in order to specify the column types.
        mxlApp.Workbooks.OpenText(FileName, , , Excel.XlTextParsingType.xlDelimited, , , True, , True, , , , ColumnTypes)
        mxlWorkBook = mxlApp.ActiveWorkbook
        mxlWorkSheet = CType(mxlApp.ActiveSheet, Excel.Worksheet)


Private Function ConvertToText(ByVal FileName As String) As String
    'Convert the .csv file to a .txt file.
    'If the file is a text file, we can specify the column types.
    'Otherwise, the Codes are first converted to numbers, which loses trailing zeros.

    Try
        Dim MyReader As New StreamReader(FileName)
        Dim NewFileName As String = FileName.Replace(".CSV", ".TXT")
        Dim MyWriter As New StreamWriter(NewFileName, False)
        Dim strLine As String

        Do While Not MyReader.EndOfStream
            strLine = MyReader.ReadLine
            MyWriter.WriteLine(strLine)
        Loop

        MyReader.Close()
        MyReader.Dispose()
        MyWriter.Close()
        MyWriter.Dispose()

        Return NewFileName
    Catch ex As Exception
        MsgBox(ex.Message)
        Return ""
    End Try

End Function
于 2014-05-14T22:42:21.407 に答える
1

これは古い質問であることは承知していますが、ここに記載されていない解決策があります。

csv を生成するときは、コンマの後にスペースを追加しますが、値の前に、たとえば, 005,.

とにかく、これはExcel 2007での自動日付フォーマットを防ぐために機能しました。

于 2011-01-04T19:28:33.800 に答える
0

フィールドの前に一重引用符を置きます。数値のように見えても、Excel ではテキストとして扱われます。

...,`005,...

編集:これは間違っています。アポストロフィのトリックは、データを直接 Excel に入力する場合にのみ機能します。CSV ファイルで使用すると、フィールドにアポストロフィが表示されますが、これは望ましくありません。

http://support.microsoft.com/kb/214233

于 2010-07-15T19:32:24.707 に答える
0

CSV を開くと、テキスト インポート ウィザードが表示されます。ウィザードの最後のステップで、特定の列をテキストとしてインポートできるため、'00' プレフィックスが保持されます。その後、セルを任意の方法でフォーマットできます。

Excel 2007 で試してみたところ、動作しているように見えました。

于 2008-09-26T02:12:55.630 に答える
0

Excel が CSV ファイルのウィザードをポップアップ表示することはありません。名前を .txt に変更すると、次に [ファイル] > [Excel で開く] を実行したときにウィザードが表示されます。

于 2009-11-30T19:14:18.217 に答える