在 Excel 物件模型中,行與列本質上也是 Range 物件。透過 Worksheet.Rows 與 Columns 屬性的 get_Item 方法,即可精準操作特定行列。本文示範如何選取第 18 列、寫入資料、複製至第 19 列,並插入新列將資料下移。
Excel.Application app = new Excel.Application();
Excel.Workbook wb = app.Workbooks.Open(@"Z:\Book1.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
app.DisplayAlerts = false;
Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets.get_Item(1);
// 取得第 18 列與第 19 列的 Range 物件
Excel.Range row18 = (Excel.Range)ws.Rows.get_Item(18, Type.Missing);
Excel.Range row19 = (Excel.Range)ws.Rows.get_Item(19, Type.Missing);
// 寫入資料並複製
row18.Value = "123";
row18.Copy(row19);
// 在第 19 列插入新列,現有資料下移
row19.Rows.Insert(Excel.XlInsertShiftDirection.xlShiftDown);
wb.SaveAs(@"Z:\Book2.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
// ... 釋放資源程式碼省略 ...
Range,支援後續的 Value、Copy、Insert 等操作。XlInsertShiftDirection.xlShiftDown 將現有列下移,騰出空白列。ws.Columns.get_Item(3) 即可操作第 C 欄。操作完成後,務必正確釋放所有 COM 物件(Workbook、Application 等),並呼叫 GC.Collect(),避免 Excel 進程在背景殘留佔用記憶體。
靈活運用行列屬性,能大幅簡化報表中插入彙總列、複製樣式列等常見需求的程式碼。