この方法で、リスト内のExcelファイルから列データを取得しようとしています。
private void Form1_Load(object sender, EventArgs e)
{
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"D:/test.xlsx");
Excel.Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
int rowCount = xlRange.Rows.Count;
int colCount = xlRange.Columns.Count;
List<string> FirstColumnValues = new List<string>();
List<string> SecondColumnValues = new List<string>();
for (int row=1; row <= rowCount; row++)
{
for (int col = 1; col <= colCount; col++)
{
switch (col)
{
case 1:
FirstColumnValues.Add(xlRange.Cells[row, col].Value2.ToString());
break;
case 2:
SecondColumnValues.Add(xlRange.Cells[row, col].Value2.ToString());
break;
}
}
}
if (FirstColumnValues.Count != 0 && SecondColumnValues.Count != 0)
{
xlWorkbook.Close();
xlApp.Quit();
MessageBox.Show("Completed");
Marshal.ReleaseComObject(xlRange);
Marshal.ReleaseComObject(xlWorksheet);
Marshal.ReleaseComObject(xlWorkbook);
Marshal.ReleaseComObject(xlApp);
xlApp = null;
}
}
問題は、プロセスEXCEL.EXE
を適切に閉じるためにすべてのことを試みても、プロセスが閉じられないことです。Excelプロセスを適切に閉じることについてここに投稿された多くの質問があることを私は知っています。しかし、私は専門家ではなく、私ができることのほとんどすべてを試しました。まだ運がない。
だから、誰かがこのコードの何が問題なのか教えてもらえますか?そして、すべてのデータがリストに保存されているときに、プロセスを一度閉じるにはどうすればよいでしょうか。