4

Excel をデータベースとして使用している組織から、実際のデータベースを介して Excel データに対して何らかの作業を行いたいという依頼がありました。(ええ、私は知っています、気にしないでください...)

クライアントは、一部の政府プログラムを追跡するために社内で使用する Excel シートを持っています。この Excel シートのデータは、CSV 経由で手動で SQL データベースに中間形式としてインポートされ、小さな Web アプリ経由で利用できるようになっていました。スプレッドシートまたはデータベースの変更は手動で (別の人によって) 行われ、手動で同期を維持する必要がありました。

新機能の仕様には以下が含まれます。

  • Excel ファイルを Web アプリにアップロードする
  • Web アプリを介して小さな変更を加えます (もちろん、このビットは非常に簡単です)。
  • ときどきデータを Excel にエクスポートする

スプレッドシート (実際にはワークブックに 2 つ含まれています) は、他の機関とやり取りするために必要ないくつかのガイドラインを実装しているため、インポートの前後で構造的に同じままにする必要があります。多くの書式設定、非表示の列、並べ替えボタン、および異なるシート内のセル間の多くのデータ リンクが含まれています。

エクスポートを配信するためにスプレッドシートを最初から再作成する必要も、インポートを行う前に適切な列を CSV に手動で抽出する必要もありません。Excelをロードし、特定のフィールドを「クエリ」し、それらをDBに書き込み、後でDBからデータをロードして、適切なセルの内容のみを操作する方法を探しています。

既存のスプレッドシートとプログラムでやり取りし、必要なビットのみを読み取りまたは変更する方法はありますか?

4

6 に答える 6

10

Excel は「COM 対応アプリケーション」であるため、COM を使用して Excel ドキュメント内のデータにアクセスし、操作することができます。使用しているプラ​​ットフォームはわかりませんが、.NET であれば非常に簡単です。C# を開始する方法については、http://support.microsoft.com/kb/302084を参照してください。

.net を使用していない場合は、COM コンポーネントと対話できる任意の言語が機能します。

于 2008-10-25T20:05:50.390 に答える
4

VBA で使用されるのと同じ API が、外部 COM インターフェイスを介して利用できます。このテーマに関する本はかなりの数あります。Steven Roman によるO'Reillyをお勧めしますが、好みは人それぞれかもしれません。

于 2008-10-25T20:54:39.420 に答える
3

言語を指定しないので、言語に依存しない場合、.Netはデータ処理のための非常に強力なクラスを提供します。

csvファイルを開くには:

System.Data.OleDbをインポートし、Excelをインポートします= Microsoft.Office.Interop.Excel

    Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DataFolder + "\;Extended Properties='text;HDR=Yes'"

    Dim conn As New System.Data.OleDb.OleDbConnection(ConnectionString)
    conn.Open()

    Dim CommandText As String = CommandText = "select * from [" + CSVFileName + "]"
    If Filter.Length > 0 Then
        CommandText += " WHERE " + Filter
    End If

    Dim daAsset As New OleDbDataAdapter(CommandText, conn)
    Dim dsAsset As New DataSet
    daAsset.Fill(dsAsset, "Asset")

ブックでシートを開くのは非常に似ています-シート名を指定してから、データセットにシート全体を入力できます-次に、データセットのTables()。Rows()にアクセスして、各行とフィールドを取得し、繰り返します。すべての行など。

于 2008-10-29T20:07:53.350 に答える
2

私たちはApache POI経由で Excel データを読み込んで操作していますが、これは Excel ファイルのデコードが完全ではありません (つまり、数式セルは完全にはサポートされていません) が、顧客は私たちに非常に満足しています。

POI は Java ライブラリであるため、純粋な Windows ショップであれば、他にもっと自然なオプションがあるかもしれませんが、前述したように、POI の使用経験は非常に良好で、人々は満足しています。

さらに: Excel ODBC ドライバーについて聞いたことがあると思いますが、これはあなたが望む/必要とするものでしょうか? (すみません、私は彼らと一緒に働いたことはありません)

于 2008-10-25T20:17:10.010 に答える
1

Excel 2007コラボレーション機能(Web からの xls の編集など) に興味があるかもしれません。

于 2008-10-25T19:59:03.853 に答える
1

もう 1 つの方法は、データベースと直接やり取りし、結果を配列として返す Excel 関数を作成することです。

このアプローチがうまくいくと思われる場合は、XLLoopを試すことができます。これにより、Java、Python、Ruby、Perl、R、Lisp、Erlang で Excel 関数を簡単に作成できます。

于 2009-05-08T19:13:08.713 に答える