web-dev-qa-db-ja.com

Excel CSV-数値セル形式

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

たとえば、CSVファイルに

...,005,...

次に、Excelに5と表示されます。これをオーバーライドして005を表示する方法はありますか?

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

Excel 2003を使用しています。

83
Sergey Stadnik

.csvファイルを開くときにExcelが適用する書式を制御する簡単な方法はありません。ただし、次の3つの方法が役立つ場合があります。

私の好みが最初のオプションです。

オプション1 –ファイル内のデータを変更する

.csvファイルのデータを次のように変更できます...、=” 005”、...これはExcelで...、5として表示されます、...

Excelはデータを数式として保持しますが、列をコピーして特殊な値を貼り付けを使用すると、数式は削除されますが、書式は保持されます

オプション2 –データのフォーマット

単にフォーマットの問題であり、その列のすべてのデータの長さが3桁の場合。次に、データをExcelで開き、このカスタム形式でデータを含む列をフォーマットします

オプション –ファイル拡張子を.dif(データ交換形式)に変更します

ファイル拡張子を変更し、ファイルインポートウィザードを使用して形式を制御します。拡張子が.difのファイルは、ダブルクリックするとExcelによって自動的に開かれます。

ステップバイステップ:

  • ファイル拡張子を。csvから。difに変更します
  • ファイルをダブルクリックして、Excelで開きます。
  • 「ファイルインポートウィザード」が起動します。
  • 「ファイルの種類」を「区切り」に設定し、「次へ」ボタンをクリックします。
  • 区切り記号の下で、「コンマ」にチェックマークを付け、「次へ」ボタンをクリックします。
  • 表示されるデータの各列をクリックして、「列データ形式」を選択します。値が「005」の列は「テキスト」としてフォーマットする必要があります。
  • [完了]ボタンをクリックすると、指定した形式でファイルがExcelで開かれます。
121
Robert Mearns

CSVを使用せず、SYLKを使用します。
http://en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK)

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

27
Mark Ransom

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

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

  1. 空の(新しい)ファイルを開きます(ファイル->ワークブックから新規)
  2. インポートWizard(データ->テキストから)を開きます
  3. .csvファイルを選択してインポート
  4. ダイアログボックスで[区切り]を選択し、[次へ]をクリックします。
  5. 区切り文字を選択し(「カンマ」以外はすべてチェックを外します)、テキスト修飾子({None}など)を選択し、[次へ]をクリックします
  6. データプレビューフィールドで、テキストにしたい列を選択します。強調する必要があります。
  7. 列データ形式フィールドで、「テキスト」を選択します。
  8. 完了をクリックします。
14
user288926

セルに改行しないスペースを追加すると役立ちます。例えば:"firstvalue";"secondvalue";"005 ";"othervalue"

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

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

2
Kloe2378231

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

2
Sergey Stadnik

範囲をテキストとして単純にフォーマットできます。

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

2
Ólafur Waage

C#コードからCSVデータをエクスポートするときにこの問題があり、タブ文字\ tを先頭のゼロデータに追加することでこれを解決したため、データはExcelでは数値ではなくテキストとして解釈されました(他の文字を追加するのとは異なり、 t見られる)。

= "001"アプローチが好きでしたが、これにより、インポートCSVファイルからこのすべてのフォーマットを削除せずに、エクスポートされたCSVデータをC#アプリケーションに再インポートすることはできません(インポートデータをトリミングするだけです) 。

2

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

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

これは古い質問ですが、ここにリストされていない解決策があります。

Csvを生成するとき、コンマの後、値の前にスペースを追加します。 , 005,

これは、とにかくExcel 2007での自動日付書式設定を防ぐのに役立ちました。

1
plntxt

ファイルをインポートするときに、列タイプを選択できると思います。数値ではなくテキストにします。現時点では、確認するコピーがありません。

1
Harley Holcombe

csvをoleDBにロードし、すべての推定データ型を文字列に強制

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

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

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

1
John Nicholas

これは1日中私を夢中にさせています(CSVファイルを開く前にExcelの列タイプを制御できないため)、これはVB.NETとExcel Interopを使用して私のために働きました:

        '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
1
Ellen

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

0
Narayanan

フィールドの前に一重引用符を付けます。 Excelは、数字のように見えても、テキストとして扱います。

...,`005,...

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

http://support.Microsoft.com/kb/2142

0
JW.

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

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

0
Mark

CSVドキュメントの番号の前に 'を追加するだけです。

0
MNassar