数値の引用符付き文字列を文字列ではなく数値として扱うExcel CSVインポート


13

データをCSVファイルにエクスポートするWebアプリケーションがあります。問題のCSVファイルの1行の例を次に示します。

28,"65154",02/21/2013 00:00,"false","0316295","8316012,8315844","MALE"

画像を投稿できないため、Excelで結果を説明する必要があります。「0316295」フィールドは数字に変わり、先頭の0は消えます。「8316012,8315844」は、83,160,128,315,844という1つの数字として解釈されます。それは、明らかに、意図した結果ではありません。

このような場合には、一重引用符を推奨する人がいるのを見てきましたが、それでもうまくいきません。

28,"65154",02/21/2013 00:00,"false","'0316295","'8316012,8315844","MALE"

単一引用符はExcelのセルで常に表示されますが、先頭に単一引用符を付けて数値を入力すると、文字列の単一引用符ではなく、意図した文字列のみが表示されます。

インポートは入力と同じではないようです。

誰かここに解決策がありますか?


LibreOfficeまたはその同類のものを使用してインポートできますか?私はちょうどインポートしました:28 65154 02/21/2013 00:00 false 0316295 8316012,8315844 MALE(あなたがそれを読むことができるなら...?)
FreudianSlip

この質問は似ており、いくつかの優れたソリューションを提供しています。superuser.com/ questions / 234997
ブラッドパットン

@FreudianSlipいいえ、サードパーティのソリューションを使用することはできません。ユーザーは[CSVのダウンロード]ボタンをクリックし、Excelでファイルを開きます。それが私たちが扱っている環境です。本当に複雑にすることはできません。
マイケルオリル

@Brad私は先にその投稿を読んで解決策を探しました。ここから、単一引用符オプションを取得しました。CSVからインポートすると、Excelがセル自体に引用符を表示するので(自分で同じものを入力しても表示されない場合でも)、私は本当に好きではありません。
マイケルオリル

あなたは少なくともウェブアプリを管理していますか?ソリューションをユーザーから透過的にどのように実装しますか?コンマを使用して値を適切に処理できるように回答を更新しました
アレックスP.

回答:


10

これは動作するはずです

28,"65154",02/21/2013 00:00,"false",="0316295","=""8316012,8315844""","MALE"

いいえ、2つの数値を含む値を破壊します。単純な数字のために我々がない終了引用符でGET = "1234567ない仕事、しかし。。
マイケルOryl

1
Webアプリケーションを制御する場合は、SYLK en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK)形式へのエクスポートを実装できます。データ表現の制御がはるかに優れています。そうでない場合は、コンバータスクリプトを簡単に作成できます
アレックスP.

2
コンマを使用して値を適切に処理するように回答を更新しました
アレックスP.

カンマ区切り値を適切に処理しました。ありがとう。
マイケルオリル

ありがとう。このソリューションは、16進数のインポートに関する問題も解決しました。Excelは00E30(0 * 10 ^ 3)に置き換えられ、Sci表記(0.00E + 00)として表示されます。それは実際に"00e3"なしで同じことをし=ます。しかし、="00e3"完全に機能します。(Excel 2010でCSVを開く)
-mpag

12

先頭のゼロを維持するために、テキストインポートウィザードでその特定の列の形式をテキストに設定できます。

  1. [ データ ]タブに移動し、[ テキストから ]をクリックして、テキストインポートウィザードを開始します。
  2. インポートするCSVファイルを選択します。
  3. Delimitedを選択してNextを押します。
  4. タブのチェックを外します(デフォルト)。カンマを選択します。テキスト修飾子がに設定されていることを確認してください"。ヒット次へ
  5. ここでフォーマットを指定できます。先行ゼロを保持する列のヘッダーをクリックします。テキストを選択します。(下の画像を参照)

    ここに画像の説明を入力してください

  6. ヒットFinishを&、あなたのデータに適した場所を選択します。サンプル結果:

    ここに画像の説明を入力してください

編集別の方法があります。Webアプリを.CSVではなく、コンマ区切りの.TXTファイルにエクスポートします(または、エクスポートしたファイルの保存後にファイル拡張子を変更します)。これにより、Excelはファイルを開くときにインポートウィザードを強制的に実行します。追加の利点として、ユーザーが元の生データを変更または改ざんする可能性を減らします。


1
はい、それは確かに本当です。上記の問題はありますが、エンドユーザーにとって、WebアプリのCSVジェネレーターのリンクをクリックするだけで、Excelが自動的に読み込むだけで済むので、エンドユーザーにとってはあまり便利ではありません。CSVファイルはExcelで開くように設定されており、その時点ではExcelにはオプションがありません。ロードするだけです。それを指摘してくれてありがとう。
マイケルオリル

1
別の方法もありますが、それが可能かどうかはわかりません:Webアプリを.TXT代わりにコンマ区切りにエクスポートする.CSV(または、エクスポートしたファイルのファイル拡張子を変更する)ようにしてください。この種のファイルは、ユーザーがファイルを開くときにインポートウィザードを実行するように「強制」します。
エルサ

それは非常に良い点です。それを指摘してくれてありがとう。将来役に立つかもしれません。
マイケルオリル

4

Excelは、タブ文字で始まる数値をテキストとして扱います。

<tabchar>000000100000200000,ABC,DEF

次のように表示されます:

000000100000200000|ABC|DEF

| セルの境界です(説明のため)。そのため、たとえば、システムがutf-8文字セットを使用してCSVファイルを生成する場合&#x0009;、数値の前に(16進数のタブ文字)を追加して、Excelにテキストとして解釈させることができます。


16進表記のセミコロンの前のスペースを削除します。答えの16進タブ文字をエスケープする方法がわからないため、意図的に間違って入力しました。
-Madeyedexter

1
逃げました。そして、新しいことを学びました、ありがとう。これを仕事のお気に入りのトピックに追加する必要があります:)
nixda

3

CSV列が次の形式でない限り、ExcelはCSVフィールドの形式を自動検出します。

"=""Data Here"""

これはGoogleシートでも機能します


0

Excelの「データ->外部データの取得->ファイルからテキストをインポート」機能を使用して、テキストとして表示する必要があります。これは@Kazeが言及したテキストインポートウィザードです。

ユーザーが何もすることなく、入力からテキストとしてExcelを強制的に表示する唯一の方法は、Excelファイルを出力し、その中に「カスタム数値形式」を指定することです。これにはXLSエクスポートライブラリを使用することをお勧めします。CSVファイルに構成テキストの行を追加するほど簡単ではないように思えるからです。


0

混乱している値については、クリーン関数を試してください。たとえば、= clean( "12345678901234567890")。数値、日付、時刻などで機能します。これはこの機能の目的ではないため、新しいバージョンなどで動作しなくなる可能性があることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.