さまざまなテキストファイル(いくつかの区切りファイルといくつかの固定幅ファイルがあります)から読み込む必要があります。私は、行ごとに(File.ReadLineタイプのメソッドを使用して遅い)ファイルを解析し、ODBCテキストドライバを使用してファイルを読み込むことを検討しましたが、誰にも他の(良い)提案はありますか?私は.NET/C#を使用しています。.NETを使用したテキストファイルの読み込みと解析のための代替手段
答えて
:私はMicrosoft.VisualBasic.FileIO.TextFieldParserオブジェクトを使用して終了
を、以下を参照してください。
http://msdn.microsoft.com/en-us/library/f68t4563.aspx
(example of implementation here)
これは私がFileHelpersを使用しているし、それは素晴らしいlibです
ファイルが比較的小さい場合は、Fileクラスを使用できます。
- ReadAllBytes
- ReadAllLines
- ReadAllText
一度Fileクラスを使用してのすべてのファイルを読み込む場合は、ファイルの読み込み処理が遅くはないと:それはあなたを助けるかもしれない、これらのメソッドを持っていますJohnによって提案された方法。ファイルのサイズとそれらで何をしたいかによっては、多かれ少なかれメモリを使用することがあります。私はあなたFile.ReadAllText(またはあなたのために適切なもの)を試してみることをお勧めします
あなたの質問は少し曖昧です。テキストファイルにはランダムなテキスト行だけでなく、構造化されたデータが含まれていると仮定します。
ファイルを自分で解析している場合、.NETにはテキストファイルのすべての行を文字列(File.ReadAllLines)の配列に読み込むライブラリ関数があります。あなたのファイルがメモリを保持するのに十分な大きさであることが分かっているなら、この方法を使用して正規表現を使って配列を繰り返して&のフィールドを抽出することができます。
Excelファイルは異なるボールゲームです。 .XLSファイルはテキストではなくバイナリなので、サードパーティのライブラリを使用してアクセスする必要があります。 Excel 2007の.XLSXファイルには圧縮されたXMLデータが含まれているため、XMLを解凍してXMLパーサーを使用してデータを取得する必要があります。あなたが知的エクササイズの必要性を感じない限り、自分のXMLパーサを書くことはお勧めできません。
Excelファイルでは、カンマ/パイプ/タブ区切りのファイル(実際は別のテキストファイル)を意味するのではなく、実際にテキストとExcelのファイルパーサーを実行できるかどうかはわかりません。実際のExcelファイルを読むには、MS Officeライブラリを使用する必要があります。
区切られたテキストファイルの解析では、FileHelpers - オープンソースを調べることができます。それはあなたの速度要件にも一致するかどうかは分かりません。
など、私はフィールドが引用符で囲まれているかどうかに対処する方法を気にせずにCSVファイルを処理することを可能にカンマが含まれている、引用符をエスケープ非常に使いやすい。 – NotMyself
FileHelpers rocks – Mcbeev
私はFileHelpersを使用しましたが、うまくいきましたが、非常に脆く、コンパイラ内部が変更されていない(ソースコード内のフィールドの順序によって動作する方法に依存します)。 http://stackoverflow.com/questions/15828/reading-excel-files-from-c/43451#43451も参照してください。個人的には、私はOPが示唆した答えを答えました。単純なケースにはかなり良いようです。 –
について読み取りXLSファイル:
は、Microsoft Office XP以上、あなたはすでにあなたが「ネイティブ」XLSファイルを読み取ることができ、.NET SDKオフィス図書館、ワード、パワーポイントなどを含めへのアクセス権を持っている持っている場合Office XPでは、インストール時に手動でチェックする必要があります(以前は.NETがインストールされていない限り)。
Microsoft Officeをお持ちでない場合、これらのライブラリを別のパッケージとして利用できるかどうかわかりません。
いくつかのあいまいな理由で、(オフィス12:-a.k.a Office 2007のから最新バージョンを含む)すべてのこれらのライブラリは、醜い依存関係が発生し、後方互換性はありませんが、使用する痛みあるCOMコンポーネントです。 I.E:Office XP(Office11)で動作するいくつかの方法があり、それをOffice 12の顧客にインストールすると、は変更されたインターフェイスがあるため、が機能しません。だからあなたはを2つのの "ライブラリ"とそれに対処する方法のセットを維持する必要があります。 Office 12ライブラリを使用してプログラムを作成し、顧客にOffice 11がある場合も同様です。ライブラリは機能しません。 :S
マイクロソフトがなぜこれらの醜いものの周りにMicrosoft.Office.XXXX管理ライブラリ(ラッパー)を作成したのか分かりません。
とにかく、あなたの質問は非常に奇妙です、ここでいくつかのアドバイスをお試しください。がんばろう!
私はLINQは、TXTファイル(パイプ区切りまたはCSV)
例えばを解析ではかなり有用であることが判明しました:(あなたが重要ではないと言う)Excelの一部を無視
これはhader行をスキップパイプ区切りファイルを読み込み、結果としてのIEnumerableを作成:
VARレコード= File.ReadAllLinesの行から (@ "C:\ blah.txt")。スキップ(1) let parts = line.Split( '|') パーツを選択します。
ODBCテキストドライバは、現在は古くなっています。これは、Unicodeをサポートしていません。あなたはすべての非ASCII文字を失うExcel 2007で UnicodeのCSVを開いて(というよりも、それをインポート)ので、もし
は驚くMS Excelはまだ、それを使用しています。
他の人が示唆しているように、.Netのファイル読み込み方法を使用することをお勧めします。私はジョンに同意
、例えば
: - 自分の質問に答える
using System.IO;
...
public class Program {
public static void Main() {
foreach(string s in File.ReadAllLines(@"c:\foo\bar\something.txt") {
// Do something with each line...
}
}
}
- 1. シンプルなプログラムのためのVisual Studio(.net)の代替手段
- 2. 2つのループを使用したJavaの読み込みテキストファイル
- 3. curlを使用した後のテキストファイルからの読み込み
- 4. 手順のためのMySQL foreachの代替手段
- 5. .NET Script Editorの代替手段
- 6. Swingコンポーネントを使用した描画の代替手段
- 7. HTML5ドラッグアンドドロップ:JavaScriptを使用したテキストボックスにテキストファイルを読み込み
- 8. ファイルアソシエーションのためのddeの最適な.net代替手段は何ですか?
- 9. コバール行列と手段のみを使用した重回帰
- 10. サムネイルを生成するためのffmpegの代替手段
- 11. UCanAccessとApache Commons Netを使用したリモートサーバのデータベースからの読み込み
- 12. 解析と、私は次の形式を持つテキストファイルから行を読み込むしたいテキストファイル
- 13. Core Dataでテキストファイルを解析して読み込む方法は?
- 14. MS Kinectを使用するための代替手段はありますか?
- 15. VS2008でマニフェストの読み込みと解析に失敗しました
- 16. データベースシャーディングのためのMySQLプロキシ代替手段
- 17. スクリーンショットからビデオフィードを生成するための代替手段
- 18. マルチスレッドを使用したファイル読み込みの書き込み
- 19. CryptEncryptの代替手段
- 20. IE8のPreventDefault代替手段
- 21. java.util.concurrent.ConcurrentSkipListSetの代替手段
- 22. java.util.Dateの代替手段
- 23. underscore.jsの代替手段
- 24. プリプロセッサディレクティブの代替手段
- 25. シングルトンの代替手段
- 26. MooToolsフォームバリデータの代替手段
- 27. SQLカーソルの代替手段
- 28. YQLの代替手段
- 29. DataGridViewの代替手段
- 30. TOADの代替手段(Linux)
非常にいい.... – Taptronic