私はC#でユーザーが選択したワークブックを調べ、 にストックデータを含むシートを探すようにしようとしています。具体的には、これは、「閉じる」、「閉じる」、または 「閉じる」のセル範囲(r < 6、c < 10)を調べることを意味します。Excelシートのコレクションを検索する#
次のコードは、ユーザーが.xlsファイルを選択した時点を示しています。
ブック内のシートをループして目的のテキストを探す方法がわかりません。
私は、シートのコレクションを作成し、それを 現在のブックにあるものに割り当てることを前提にしていますが、これまでの試みは機能しませんでした。
private void button1_Click(object sender, System.EventArgs e)
{
try
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Excel Files (*.xls)|*.XLS";
if (dlg.ShowDialog() == DialogResult.OK)
{
// MessageBox.Show(dlg.FileName, "My Application", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk);
Excel.Application xlApp = new Excel.ApplicationClass();
xlApp.Visible = true;
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(dlg.FileName,
0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "",
true, false, 0, true, false, false);
}
}
catch (Exception theException)
{
String errorMessage;
errorMessage = "Error: ";
errorMessage = String.Concat(errorMessage, theException.Message);
errorMessage = String.Concat(errorMessage, " Line: ");
errorMessage = String.Concat(errorMessage, theException.Source);
MessageBox.Show(errorMessage, "Error");
}
}
ありがとうございます。
ジェフ
「Missing.Value」は、なぜ人々がVB.NET for Office interopを好んでいるのか、C#4に動的キーワードがある理由です。 –
はい、クリーンアップする必要があります。私は下の私のちょっとした答えでそれを言及しなかった。私の理解は、Marshal.FinalReleaseComObject(オブジェクト)はCOMオブジェクトに割り当てられたすべての変数に対して呼び出されるべきです。私はあなたがここに示すようにforeachループを使うことができないということも意味すると思います。 – Jay
クリキー。そして、 "application.Workbooks.Open()"はエラーを引き起こします。 http://stackoverflow.com/questions/158706/how-to-properly-clean-up-excel-interop-objects-in-c/159419 –