4

既存の Excel ワークブックのワークシートに大量のデータを挿入します。Excel ワークブックには、計算とピボット テーブルを含む他のワークシートがあります。データには、60,000 もの行と 30 を超える列が含まれる場合があります。このソリューションは、Excel 2003 と Excel 2007 の両方で機能する必要があります。

Excel OLE オブジェクトの使用は遅すぎるため、CSV ファイルからデータを読み込もうとしています。データをクリップボードに配置してからワークシートに貼り付けることで、データをロードする方法を考え出しました。これはかなりのクラッジだと思います。プログラムで CSV ファイルをワークシートに読み込む別の方法はありますか? それとも、まったく別のソリューションですか?


更新:回答を完全に調査する前に、別のタスクで非難されました。数週間でこれに戻ることができるはずです。このタスクに戻ったら、必ずまた更新します。

これまでのすべての回答に感謝します!

4

6 に答える 6

2

XLSReadWrite は、Delphi から Excel ファイルを読み書きできるコンポーネントです。高速で、Excel 2003 および 2007 をサポートしています。新しい Excel ファイルを作成することも、既存のファイルを開いて追加/変更することもできます。

また、Excel をインストールする必要はありません。

http://www.axolot.com/components/xlsrwii20.htmを参照してください。

于 2009-03-18T12:34:18.380 に答える
1

これを Office 2003 で動作させるための要件を削除できる可能性はありますか? Open XML Format SDKをお勧めします。Open や Close などのイベントを処理できるスプレッドシート ドキュメントにマネージ コード アセンブリをバインドし、特にドキュメント内のセルの読み取りと書き込みを行うことができます。または、アプリケーションから XSLX ドキュメントを操作するために使用できます。実際、かなり滑らかです。

これではうまくいかないので、スプレッドシートの読み込み時に CSV ファイルを取り込むマクロを作成してみてはどうでしょうか。

于 2009-03-18T02:03:36.727 に答える
0

実際には、かなり高速でかなり古い技術(現在)ですが、おそらく最速の方法があります。

ADOまたは以前のバージョンのDAO(ADO.NETではないことに注意してください)

ADOとJETエンジンを使用してCSVファイルを読み取り、データをADOレコードセットに取り込むことができます。次に、Excel Range Objectには、ADO(またはDAO)レコードセットから(非常に高速に)コピーするCopyFromRecordSetメソッドがあります。

http://msdn.microsoft.com/en-us/library/aa165427(office.10).aspx

于 2009-03-18T03:20:14.280 に答える
0

csv を listview にロードするか、OLEDB プロバイダを使用して DBGrid にロードし、Max Components の TMxExport コンポーネントを使用して xls ファイル形式にエクスポートできます。

最大コンポーネント

于 2009-03-18T02:02:30.490 に答える
0

csv ファイルをワークシートに直接リンクしてみましたか。

[データ] -> [外部データのインポート] -> [データのインポート] に移動し、ファイルの種類を [テキスト ファイル] に変更します。

csv が更新されたら、ワークシートを更新できます。

注:あなたが示した量のデータでこれを行っていないので、YMMV

于 2009-03-18T02:11:46.877 に答える
-1

CSV の代わりにタブ区切り値を使用することができます - これを Excel に貼り付けるだけではありません :)

于 2009-03-19T11:45:52.030 に答える