我有一个包含5行3列的工作表。我复制了这张表:
activeSheet.Copy(Type.Missing, activeSheet);
var outputSheetIndex = activeSheet.Index + 1;
var outputSheet = (Worksheet)application.Sheets[outputSheetIndex];
上面将纸张复制到另一张纸上。我现在想在outputSheet中插入另一个范围,并将outputSheet列移到右边。
我不确定应用Insert
方法的范围对象。
我尝试在开头创建一个要插入的新范围,但这不起作用:
var startCell = outputSheet.Cells[1, 1];
var endCell = outputSheet.Cells[output.Count(),
properties.Length + 1];
var writeRange = outputSheet.Range[startCell, endCell];
writeRange.Insert(XlInsertShiftDirection.xlShiftToRight);
当我插入writeRange时,我希望现有的数据范围向右移动。
答案 0 :(得分:0)
如果我理解,你想要将OutputSheet中的所有数据推到右边,在左边留下一列。例如:
如果是这样的话:
你想要这样,对吧? :
然后做:
outputSheet.Columns[1].Insert(); //creates empty column and pushes the actual data to the right
如果你想从inputSheet(原始工作表)插入一个范围到输出中,只需执行:
Excel.Range inputRange = ((Excel.Range)inputSheet.Cells[1, 4].EntireColumn; //Let's say you want to pass the 4th column (forget the 1, it doesn't do anything because you get the Entire Column, so it ignores the x-axis which are the Rows)
Excel.Range outputRange = ((Excel.Range)outputSheet.Cells[1, 1].EntireColumn; //into the first Column of the outputSheet
outputRange.Value = inputRange.Value;
如果出现意外情况(如单元格合并),只需获取特定的行或列并将其删除:
outputSheet.Columns[2].Delete();
答案 1 :(得分:0)
如果您只想在新的(复制的工作表)上插入空白列,我认为这样可行:
outputSheet.Range["A:A"].Insert(
Microsoft.Office.Interop.Excel.XlInsertShiftDirection.xlShiftToRight,
Type.Missing);
如果您希望该列位于其他位置,您可以更改" A:A"到你想要的范围。