7

フォルダーから複数の Excel ファイルを読み取り、それらからいくつかの情報を抽出するアプリケーションを作成することは可能ですか?

4

3 に答える 3

8

はい、Interop の使用方法は次のとおりです。最初に、プロジェクトに Excel Interop ライブラリを追加する必要があります。これを行うには、新しい Visual Studio ソリューションを作成し、 [参照設定] を右クリックして [参照の追加] を選択し、[.NET] タブから [ Microsoft.Office.Interop.Excel ]を選択します。

次に、Excel 用の using ステートメントと InteropServices 用の using ステートメントを追加する必要があります (COM オブジェクトと相互運用しているため)。

using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;

次に、メソッド内でApplicationオブジェクトを作成する必要があります。

Excel.Application application = new Excel.Application();

次に、次のように、読み取りたい各ワークブックのWorkbookオブジェクトを作成します。

Excel.Workbook workbookOne;
Excel.Workbook workbookTwo;
Excel.Workbook workbookThree;

Application オブジェクトを使用して各ワークブックを開き、それぞれのワークブックをそれぞれの Workbook オブジェクトに読み込みます。

workbookOne = application.Workbooks.Open(@"C:\workbookOneLocation.xlsx");
workbookTwo = application.Workbooks.Open(@"C:\workbookTwoLocation.xlsx");
workbookThree = application.Workbooks.Open(@"C:\workbookThreeLocation.xlsx");

次に、抽出する情報を決定する必要があります。これを行ったら、ワークブックのどのワークシートにあるのかを判断し、タブを見て数えるだけで数を計算します. 以下の例では、Sheet2が 1 番、Sheet1が 2 番、Sheet3が 3 番です。

例

次のように、必要な情報ごとに変数を作成します (値型の変数はすべて null 可能である必要があります)。

string firstPieceOfInformationINeed;
string[] secondPieceOfInformationINeed;
double? thirdPieceOfInformationINeed;

必要な最初の情報は、ワークブック 1 内のシート 1 のセル A1 の文字列であり、2 番目の部分はワークブック 2 内のワークシート 2 のセル B2 - B4 であり、3 番目の部分はワークシートのセル C5 の数値であるとします。ワークブック 3 内の 3 つ。これを行います:

string firstPieceOfInformationINeed;
string[] secondPieceOfInformationINeed;
double? thirdPieceOfInformationINeed;

Excel.Worksheet worksheet;
Excel.Range range;

worksheet = workbookOne.Sheets[1];
range = worksheet.Cells["1", "1"];

firstPieceOfInformationINeed = range.Value as string;

worksheet = workbookTwo.Sheets[2];
range = worksheet.Range["B2", "B4"];

secondPieceOfInformationINeed = range.Value as string[];

worksheet = workbookThree.Sheets[3];
range = worksheet.Cells["3", "5"];

thirdPieceOfInformationINeed = range.Value as double?;

次に、ブール値を使用して変更を保存するかどうかを示し、ワークブックを閉じます。

workbookOne.Close(true);
workbookTwo.Close(false);
workbookThree.Close(true);

アプリケーションを終了します。

application.Quit();

COM オブジェクトを解放します。

Marshal.ReleaseComObject(application);

これで、Excel の操作が完了し、必要なさまざまな情報がすべて C# 変数として格納されました。これらを使用して、必要なことを行うことができます。

于 2012-10-05T12:22:02.100 に答える
0

NPOI(http://npoi.codeplex.com/)またはNetOffice(http://netoffice.codeplex.com/)ライブラリを使用してみてください

于 2012-10-05T12:03:50.357 に答える
0

はい、そうです。Excel Interop なしでそれを行いたい場合は、Excel 2007 + で動作しますが、ClosedXML を使用できます。

于 2012-10-05T12:00:33.373 に答える