1

ユーザーがExcelドキュメントをアップロードしてHTMLを出力できるMVCアプリケーションに取り組んでいますが、相互運用ライブラリに問題があり、誰かが助けてくれることを願っています.

これを非常にシンプルに保つために、ワークシートをインスタンス化または「新規作成」し、選択したシートの ID を使用する段階に達しました。ユーザーは使用したいシートを選択しましたが、これを行う方法はないようです。

workbookModel.workbook.Sheets.get_Item(1);モデル内の現在のワークブックを取得し、ID 1 のシートを取得するなどのコードを試しました。これは、0 ベースではなく 1 ベースのインデックスであると考えています。私はいくつかのビューモデルを使用しているため、コードの上にあることに注意してください。ただし、ここで実際に行っているのはWorkbook work = new Workbook().Sheets.get_Item(1);

シートの代わりにワークシートを誤って使用していた場合にも試してみWorkbook work = new Workbook().Worksheets.get_Item(1);ましたが、そうは思いません。

しかし、私が試したことは何もないようです。

誰かが私を正しい方向に向けることができれば、それは大歓迎です.これが意味をなさず、より多くの情報が必要な場合は、私に知らせてください.

どうもありがとう

4

1 に答える 1

1

まず、Interop は、Excel アプリケーションを実行している場合にのみ機能します。

そのため、実行していない場合は、次のことを行う必要があります。

Application ExcelApp = new Application();

アプリケーションからワークシートを取得するには、まずワークブックが必要です。次のいずれかでワークブックを取得できます。

//to get the first workbook of an application
Workbook MyBook = ExcelApp.Workbooks[1];

//to get a workbook by name
Workbook MyBook = ExcelApp.Workbooks["bookname"];

//to open a workbook from a xls file
Workbook MyBook = ExcelApp.Workbooks.Open(name and other parameters);

//to add a new workbook to the application
Workbook MyBook = ExcelApp.Workbooks.Add(optional template);

ワークブックは実行中のアプリケーションなしでは存在できず、シートは実行中のアプリケーションで親ワークブックなしでは存在できないことに注意してください。

ワークブックからワークシートを取得するには、キャストする必要がありますas object

//to get an existing sheet
Worksheet MySheet = (Worksheet)MyBook.Worksheets["sheetname"];

//to create a new sheet
Worksheet MySheet = (Worksheet)MyBook.Worksheets.Add(some parameters);

しかし、シートから名前を取得してビューにリンクを設定できれば、それらのシート インスタンスを保存して、html を作成するメソッドに渡すことができます。または、それらをグローバル変数に保存します。

于 2013-06-25T17:51:46.233 に答える