2009-03-24 8 views
3

約350列を含むCSVからデータをインポートしています。このCSVのインポートは修正されており、私はそれを完全に制御できません。Microsoft Jet OLEDBを使用したCSVの列制限

Excel 2003でCSVを開こうとすると、列の制限値255(IV)のため部分的にしか読み込まれません。

OleDbとMicrosoft.Jet.OLEDB.4.0を使用してCSVをデータセットにロードすると、255列しか表示されません。さらに悪いことに、これらの255列の一部のデータにアクセスしようとすると、間違ったデータが表示され、値が一貫して分割されてしまいます。

ExcelでCSVを開き、データを切り捨てて再保存すると、インポートが正常に機能します。

私の質問は、誰もJet.OLEDBプロバイダでこの制限に遭遇したことです。はいの場合は、問題の回避策がありますか?そうでない場合、そのような大きなCSVをロードできる代替ソリューションがありますか?

注:これは単なるタスクではありません。必要に応じてこのインポートを実行する閲覧/アップロードボタンをエンドユーザーに提供する必要があります。

答えて

0

私はそれをオブジェクト指向の方法で行うことをお勧めします。ファイルヘルパーライブラリを使用してみてください。 http://www.filehelpers.com/。これにより、ファイル内の各行にオブジェクト表現を持たせることができます。このオブジェクトをデータベースに保持することができます。

0

schema.iniファイルをCSVファイルと同じフォルダに配置します。完全な構文については、hereを参照してください。

1

ExcelDataReaderを使用し、プロジェクトに参照を追加してください。コードの下に使用してください...

FileStream stream = File.Open(strFileName, FileMode.Open, FileAccess.Read); 
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); 
DataSet result = excelReader.AsDataSet(); 
excelReader.Close(); 
return result.Tables[0]; 
関連する問題