现在需要用C#往一个Excel模板中插入若干行,在插入点7行下面有几幅图片如果直接在Excle模板中插入的话,图片会自动下移,
excle的宏内容为:
Sub Macro1()
'
' Macro1 Macro
''
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
但是在C#中用如下代码进行插入的话
    /// <summary>
    /// 在excel指定行上面插入新行
    /// </summary>
    /// <param name="rowIndex">指定行</param>
    /// <param name="count">插入的行数</param>
    public void InsertRows(int rowIndex, int count)
    {
        myRange = (Excel.Range)myWSheet.Rows[rowIndex, Type.Missing];
        for (int i = 0; i < count; i++)
        {
            //myRange.Insert(Excel.XlDirection.xlDown, Excel.XlInsertFormatOrigin.xlFormatFromLeftOrAbove);
            myRange.Rows.Insert(Excel.XlDirection.xlDown, Excel.XlInsertFormatOrigin.xlFormatFromLeftOrAbove);
        }
    }
图片就不会自动下移,和数据行重叠在一起。通过C#,怎么才能在插入行的时候让图片自动下移?

解决方案 »

  1.   

    //使用最佳宽度
                Range allDataWithTitleRange = xSt.get_Range(excel.Cells[1, 1], excel.Cells[rowIndex, colIndex - 1]);
                allDataWithTitleRange.Select();
                allDataWithTitleRange.Columns.AutoFit();
      

  2.   

     Excel.Range rg = (Excel.Range)this.Application.Selection;
                int row = rg.Row;  Excel.Worksheet ws = (Excel.Worksheet)this.Worksheets.get_Item(1);
                        object value = ws.get_Range("A" + row.ToString(), missing).Value2;
                        rg.EntireRow.Insert(Missing.Value, Missing.Value);
                        rg = ws.get_Range("A" + row.ToString(), missing);
                        rg.Value2 = value;这个是我自己做的插入行的一个代码,也许对你有帮助
      

  3.   

    最后通过在C#中调用excel模板中的VBA宏实现的
    参考文章:
    http://www.cnblogs.com/heekui/archive/2008/03/30/1129355.html
    http://msdn.microsoft.com/zh-cn/library/bb608613.aspx谢谢大家的热心,散分