所以我有這個代碼:
using Excel = Microsoft.Office.Interop.Excel;
...
public static void AppendColumnValuesGivenStart(Excel.Worksheet wks, int column, int columnStarts, int totalColumnsInTable, List<ColumnValues> columnValues)
{
for (int x = 0; x < columnValues.Count; x )
{
for (int y = 0; y < totalColumnsInTable; y )
{
wks.Cells[x columnStarts, column y].Insert(Excel.XlInsertShiftDirection.xlShiftDown, Type.Missing);
}
}
}
它應該在單元格的指定位置插入一個新行,但在輸出中它會創建一個新行,該行一直跨越到右側并干擾其他表格。
我做錯了什么,在指定單元格中插入新行的正確方法是什么?
uj5u.com熱心網友回復:
如果我對您的理解正確,您希望將行插入作業表中一組非常有選擇性的單元格中。
我有這個帶有資料矩陣的作業表......

然后我想在E列和J列之間插入 5 行,給我一個看起來像這樣的結果......

為了實作這一點,有幾種方法可以做到這一點。
您可以通過專門選擇范圍并運行插入方法來完成...
xlWorksheet.Range["E6:J10"].Insert(XlInsertShiftDirection.xlShiftDown);
您顯然也可以傳入引數以使其發生...
int rowFrom = 6;
int rowTo = 10;
xlWorksheet.Range[$"E{rowFrom}:J{rowTo}"].Insert(XlInsertShiftDirection.xlShiftDown);
或者你可以使用單元格參考來做到這一點......
var cellAddressFrom = ((Range)xlWorksheet.Cells[6, 5]).Address;
var cellAddressTo = ((Range)xlWorksheet.Cells[10, 10]).Address;
xlWorksheet.Range[$"{cellAddressFrom}:{cellAddressTo}"].Insert(XlInsertShiftDirection.xlShiftDown);
或者更多,使用列字母而不是數字的單元格參考......
var cellAddressFrom = ((Range)xlWorksheet.Cells[6, "E"]).Address;
var cellAddressTo = ((Range)xlWorksheet.Cells[10, "J"]).Address;
xlWorksheet.Range[$"{cellAddressFrom}:{cellAddressTo}"].Insert(XlInsertShiftDirection.xlShiftDown);
最重要的是,您需要正確設定引數,并且需要組成一個矩陣(除非它是您想要向下移動的單個單元格)以便向下或向右移動單元格。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/447771.html
