web-dev-qa-db-ja.com

csvからExcelへのデータインポートのサイズ制限を増やす

Excelにインポートしているcsvファイルに大量のデータがありますが、ほとんどは問題ありませんが、列の1つに最大1000文字のデータが含まれています。残念ながら、Excelはそれが必要以上のデータであると想定し、短縮しているようです(255文字)。

この制限を増やしてすべてのデータを保持するにはどうすればよいですか?

13
SwiftD

まず、これを解決しようとするあなたの助けをありがとうございました。 Excelはセルに255文字を超える文字を非常にうまく収めることができることがわかりました(前述のように、RAMを持っている場合は、最大32,767が想定されます)。

では、なぜ仕事をしなかったのですか?

簡単な答えはわかりません。データを初めてExcelに取り込んだとき、csvとしてエクスポートしてからExcelで開きました。これにより、列が短くなります(255)。 (csvファイルには、メモ帳で表示したときにすべてのデータが含まれていましたが、Excelで再度保存したときは含まれていませんでした)。

問題の列にはセミコロンがいくつか含まれていましたが、これはカットオフポイント(常に255)に対応しておらず、私はを使用していませんでした。区切り文字として。

私の解決策は、xlsファイルとしてエクスポートすることでした。これは、完全なデータを含むcsvファイルとして正常に保存されています。

ここで問題が何であるか正確にはわかりませんが、これが誰かを助けることを願っています。

0
SwiftD

Excelに奇妙なバグがあります。これを回避する方法(修正ではなく、回避するだけ)を説明します。MSOfficeプログラマーによってすぐに修正される可能性があります。たぶんそれはExcel 2013で修正されたかもしれません、私はまだそれを開きませんでした。

これが問題です。

テキストセルの最大長は32767で、問題ありません。

数値セルの最大長は255で、問題ありません。

しかし、数値パーサーを呼び出して失敗し、次にテキストパーサーを呼び出すセルがある場合、大きな混乱が生じます。

例えば:

...,"This is a cell with 30,000 characters........",...

動作します。

しかし、最初に少しマイナスを入れると、

...,"-This is a cell with 30,000 characters........",...

excelでは負の数と見なされるため、最初のテキスト文字は255文字しか表示されません。

それが役に立てば幸い。

14
khitron23

ダッシュで始まることがある長いテキストフィールドが含まれているcsvファイルでこの問題に遭遇しました。 Excelのインポートはダッシュのためにフィールドを数値として処理しようとし、数値のインポートはそれを255文字にトリミングするようです。それが失敗すると、テキストとしてインポートされますが、最初の255文字のみです。

この問題を回避するには、csvを開くだけでなく、インポートする必要がありました。インポートウィザードで、問題のある列を選択し、そのタイプを「一般」から「テキスト」に切り替えました。次に、Excelはそれを数値として解析しようとはしません。列幅全体を取得します。

1
Don Kirkby

一般に、これは古いバージョンの制限であり、Excelの最新バージョン(とにかく2013)には適用されません。ただし、ワークブックが以前のバージョンで作成された場合、以前のバージョンで変更された(つまり、特定のプロパティと属性でインスタンス化された)セルオブジェクトは、新しいバージョンのExcelで開いた場合でも、255文字の制限を保持します。

修正:

  1. Excelの最新バージョンを使用して、別のunusedワークシートのセルを再作成し、書式設定や結合を再作成します。問題のセルには範囲条件が必要です。
  2. 一般またはテキスト形式に設定されていることを確認してください。
  3. セルの新しい再作成されたバージョン(または結合範囲)を切り取るかコピーして貼り付け、古い不良バージョンの上に貼り付けます。
  4. これで、セルにデータを入力するときに、問題が発生しなくなりました。

その後WebweaverDが投稿したとき、彼はcsvインポートの問題の解決策を見つけました。また、セルがVBAを介して入力されている場合、他の返信で言及されているように、状況はより複雑になります。しかし、データが手動で入力されている場合、または別のアプリケーションからレガシーブックにコピー/貼り付けされている場合、このレガシーセル属性の問題が原因である可能性があります。

0
pstraton

私も同様の問題があり、すべての値がフォーマットされていました(数値を数値に、テキストをテキストに変換できますが、長いテキストがカットされていました:

...,="Long Text........",...

最初に=を付けると、最初のテキスト文字は255文字しか表示されません。これは、Excelがそれを数値と見なしているため、=を最初から削除します。

それが役に立てば幸い。

0
metodi25

回避策(Excel 2016で利用可能)...

オプションA. Excelでテキストインポートウィザードを実行します(.txtファイル拡張子などを使用するか、.xls拡張子を使用し、警告を受け入れ、最初の列を選択して、Data => 'Text to Columns'を実行します)。次に、ウィザードの終わり近くで、列タイプを「一般」から「テキスト」に変更します。

オプションB. Get&Transformを使用します。データ=>新しいクエリ=>ファイルから=> CSVから。

0
stevlars

http://office.Microsoft.com/en-us/Excel-help/Excel-specifications-and-limits-HP010342495.aspx によると、Excel 2010は255文字の列幅しかサポートしていません。

編集:これはあなたが話している問題ですか、Webweaver? [書式]> [セル]> [テキストの折り返し]を選択すると、残りの文字が表示されますか?

編集:気にしないでください、この答えは当面の問題とは多少無関係です(おそらく何らかの形で関連していますが、質問には答えていません)

0
Marcus Chan