xls ファイルを開き、複数行のデータを読み込んで、データからカスタム リストを作成し、Excel シートを閉じようとしています。これは私が持っているものです:
InitializeWorkbook(Path);
List<Custom> list = new List<Custom>();
Worksheet wkSht = (Worksheet)workBk.Worksheets[3];
if (wkSht.Name.Equals("Sht3", StringComparison.OrdinalIgnoreCase))
{
Range PartNumRange = wkSht.get_Range("A:A", System.Reflection.Missing.Value);
Range RevRange = wkSht.get_Range("C:C", System.Reflection.Missing.Value);
Range SwRange = wkSht.get_Range("L:L", System.Reflection.Missing.Value);
Range NomenRange = wkSht.get_Range("M:M", System.Reflection.Missing.Value);
// Start at Row 6
int i = 6;
object Num = (PartNumRange[i, 1] as Range).Text;
object Nomen = (NomenRange[i, 1] as Range).Text;
object Sw = (SwRange[i, 1] as Range).Text;
object SwRev = (RevRange[i, 1] as Range).Text;
while (!string.IsNullOrEmpty(Num.ToString()) || !string.IsNullOrEmpty(Nomen.ToString()) || !string.IsNullOrEmpty(Sw.ToString()) || !string.IsNullOrEmpty(SwRev.ToString()))
{
if (!string.IsNullOrEmpty(Nomen.ToString()) && !string.IsNullOrEmpty(Sw.ToString()) && !string.IsNullOrEmpty(SwRev.ToString())
{
Custom item = new Custom();
item.PartNumber = (PartNumRange[i, 1] as Range).Text.ToString();
item.Nomenclature = (NomenRange[i, 1] as Range).Text.ToString();
item.SwNumber = (SwRange[i, 1] as Range).Text.ToString();
item.SwRevision = (RevRange[i, 1] as Range).Text.ToString();
list.Add(item);
}
i++;
Num = (PartNumRange[i, 1] as Range).Text;
Nomen = (NomenRange[i, 1] as Range).Text;
Sw = (SwRange[i, 1] as Range).Text;
SwRev = (RevRange[i, 1] as Range).Text;
}
GC.Collect();
GC.WaitForPendingFinalizers();
Marshal.ReleaseComObject(PartNumRange);
Marshal.ReleaseComObject(RevRange);
Marshal.ReleaseComObject(SwRange);
Marshal.ReleaseComObject(NomenRange);
Marshal.ReleaseComObject(wkSht);
workBk.Close(false, System.Reflection.Missing.Value, false);
Marshal.ReleaseComObject(workBk);
Marshal.ReleaseComObject(ExcelWorkSheets);
ExcelApp.Quit();
Marshal.ReleaseComObject(ExcelApp);
GC.Collect();
GC.WaitForPendingFinalizers();
}
理由はわかりませんが、実行が終了しても Excel が閉じません。プログラムが終了したときにのみ、Excel が終了します。私はあらゆる種類の組み合わせを試しましたが、2 つのドットのルールを回避しましたが、それでもうまくいきません。私が見逃しているものについてのアイデアはありますか?
編集: ExcelApp.Quit を呼び出すと、ExcelApp と ExcelWorksheets の両方が閉じます。