ロングタイムリーダー、初めてのポスター。C#、Visual Studio、Excelを開いてコンボボックスにデータを入力
私は過去数時間にわたってExcelブックからシート名を取り出し、コンボボックスでの選択を表示しようとしました。私はそれを稼働させることができましたが、私はその原油とそれほど効率的ではないと少し気になりました。
private void btnChoose2_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openfileDialog1 = new OpenFileDialog();
if (openfileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
openLabel.Text = openfileDialog1.SafeFileName;
String filename = DialogResult.ToString();
var excelApp = new Microsoft.Office.Interop.Excel.Application();
excelApp.Visible = false;
excelApp.Workbooks.Open(openfileDialog1.FileName);
int rcountTag = excelApp.Sheets.Count - 1;
for (int i = 1; i <= rcountTag + 1; i++)
{
Microsoft.Office.Interop.Excel.Sheets excelSheets = excelApp.Worksheets;
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)
excelSheets.get_Item(i);
comboBoxMapping.Items.Insert(i - 1, worksheet.Name);
}
}
}
アドバイスをいただければ幸いです。
あなたがやるべき仕事のビットを持っていますこのコードを堅牢にする。 Excelを終了する前に 'excelApp.Quit()'を呼び出す必要があります。また、スコープ外に出る前に**すべてのCOMインスタンス**で 'System.Runtime.InteropServices.Marshal.ReleaseComObject(インスタンス)'を呼び出す必要があります。上記のコードでは、 'excelApp.Workbooks.Open(...)'の 'excelApp.Workbooks'リファレンスも含まれています - あなたはopenを呼び出してからリファレンスをリリースする前に' excelApp.Workbooks'への参照を取得する必要があります仕上げの前に。すべての単一の参照に非常に注意する必要があります。 – Enigmativity
ありがとうございます、私はこれを念頭に置いておきます。 –