0

TCL の TCOM パッケージを使用して作成している .csv ファイルにタブを追加したいと考えています。以下は、2 番目のタブを作成するために使用したコードです。しかし、2 番目のタブが表示されません。最初に作成されたタブが表示されます。

set application [::tcom::ref createobject "Excel.Application"]
set XlFileFormat(xlCSV) [expr 6]
set workbooks [$application Workbooks]
set workbook [$workbooks Add]                         
$application DisplayAlerts False
set worksheets [$workbook Worksheets]

set worksheet1 [$worksheets Item [expr 1]] 
set cells_worksheet1 [$worksheet1 Cells]

set worksheet2 [$worksheets Item [expr 2] 
set cells_worksheet2 [$worksheet2 Cells] 
4

1 に答える 1

1

ここで「タブ」と呼ばれるものは、実際にはワークシートです。これは、使用している Excel などの特定のオフィス スプレッドシート アプリケーションにのみ存在する概念です。ネイティブのファイル形式でデータを保存/ロードする場合、これらのアプリケーションはこの高レベルの構造を保持できますが、CSVは単純です。これは単なる 2 次元のマトリックスです。この単純さにより、CSV 形式は、一般的なオフィスのスプレッドシート ソフトウェアで管理されているワークスペースの 1 枚のシートの内容を保存する場合にのみ使用できます。さらに、CSV は、セル参照や数式、セルの書式設定などの高度なものを保存せず、生データのみを保存します。

ここで、次のアドバイスを注意深く評価してください。

  • あなたの場合、Tcl から COM を介して Excel をスクリプト化するという考えを理解する必要があります。Tcl と COM は、概念的には何の役にも立ちません。つまり、Excel アクションのスクリプト作成で問題が発生した場合は、これらのラッパーではなく、Excel のことを考えてください。通常、次の手順を実行すると役立ちます。

    1. Excel を起動し、意図したアクションを手動で実行してみてください。 あなたの特定のケースでは、複数シートのドキュメントを CSV 形式のファイルに保存できないことがわかるので、これにより、この質問をする必要がなくなります。
    2. マクロを記録し、マクロ エディターを開いて、Excel がスクリプト化した内容を (VBA で) 確認します。このコードを任意のランタイムからの COM を介した呼び出しに変換するのは非常に簡単です。これは、COM を使用してそのようなソフトウェアをスクリプト化する一般的な方法です。
  • ドキュメントを読んでください!ドキュメントは豊富にあるので、CSV とは何かについての入門資料を読まない理由はありません。 CSV の方がはるかに単純であると既に言われています。これはいくつかの鐘を鳴らしたはずです。

  • http://whathaveyoutried.comを読むことを検討してください— 質問する前に十分な調査を行っていないようです。
于 2012-07-21T11:21:20.450 に答える