2

大量のデータを Excel にダンプする Delphi XE2 アプリケーションがあります。

Excel 2010 を使用しているため、ヘッダー行に組み込みのフィルターと検索ツールを使用して、そのデータをテーブルとしてフォーマットできるかどうかをユーザーから尋ねられました。

VBAを見ると、かなり単純なはずです

ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A1:$Z$999"), , xlYes).Name = "fee"

1) 変換する範囲を知っている

2) TExcelApplicationTExcelWorkbookの両方がActiveSheetを使用可能なプロパティとしてリストします

ここに問題があります

3) どちらもListObjectsを使用可能としてリストしません。

これは、Delphi がネイティブで Excel 2000 または Excel 2003 しかサポートしていないためだと思います。それで、これを回避する方法はありますか?

4

2 に答える 2

3

これは、Delphi がネイティブで Excel 2000 または Excel 2003 しかサポートしていないためです。

1) Delphi はネイティブで Excel をサポートしていません。すべて手作業で調整された OCX インポートで行われ、必要なときにいつでも独自のインポートを作成できます。

Delphi メニュー: コンポーネント/コンポーネントのインポート/タイプ ライブラリ/excel.exe

2) ただし、Delphi XE2 について話す場合は、手動で調整されたものが含まれc:\RAD Studio\9.0\OCX\Servers\pas2010\Excel2010.pasています。

したがって、Delphi には 3 つの設計時パッケージがあります。

  • c:\RAD Studio\9.0\bin\dcloffice 2010160.bpl
  • c:\RAD Studio\9.0\bin\dcloffice 2K160.bpl
  • c:\RAD Studio\9.0\bin\dcloffice xp160.bpl
于 2012-12-10T13:06:20.800 に答える
2

これは、ActiveSheetがIDispatchとして公開されているためだと思います。最初に型キャストできます。

var
  w: ExcelWorksheet;
begin
  w := ExcelApplication1{....}.ActiveSheet as ExcelWorksheet;
  w.ListObjects.DoAsYouWish;

これが実際にはまったく利用できない新機能である場合は、新しいタイプライブラリをインポートできます。最初に、現在のTExcelApplicationオブジェクトを含むパッケージをアンインストールすることをお勧めします。その後:

  • Component->に移動しますImport Component...
  • 「タイプライブラリのインポート」を選択し、「次へ」をクリックします
  • 正しいタイプのライブラリを選択してください。これは、という名前だと思いますMicrosoft Excel 14.0 Object Library
  • コンポーネントをインストールするパレットページを選択するか、Office2010などの新しいパレットページを入力します
  • チェックボックスGenerate component wrapperをオンにすると、TExcelApplicationコンポーネントが提供されます。
  • [次へ]をクリックします
  • [新しいパッケージにインストール]を選択して、[次へ]をクリックします
  • ファイル名を選択し、パッケージ名を入力します(Office2010)。
  • [完了]をクリックします

これで新しいユニットができましたが、このユニット(私はこれらの手順を実行しました)では、ActiveSheetはまだIDispatchであるため、最初に投稿した型キャストが必要です。

于 2012-12-10T10:32:32.337 に答える