public Boolean ExportExcel(DataTable dt,Array ColumnsName, string ExcelTemplateName, string ExportExcelFileName)
        {
         
            if (IsMaxRowCount(dt) == false)
            {
                return false;
            }            ExcelCoordinateData BeginCoordData = new ExcelCoordinateData();
            ExcelCoordinateData EndCoordData = new ExcelCoordinateData();            try
            {
                ExcelBeginTime = DateTime.Now;                //1 新建ExcelApplication进程
                app = new Excel.Application();//private Excel.Application app                 if (app == null)
                {
                    return false;
                }
                app.Visible = false;
                app.UserControl = true;                ExcelEndTime = DateTime.Now;                //2 调用模板工作簿到导出Xls文件内                workbooks = app.Workbooks;//Excel.Workbooks workbooks
                if (ExcelTempfName.Trim() == "")
                {
                    if (File.Exists(ExcelTemplateName))
                        workbook = workbooks.Add(ExcelTemplateName);
                }
                else
                    workbook = workbooks.Add(ExcelTempfName);                sheets = workbook.Worksheets;                worksheet = (Excel._Worksheet)sheets.get_Item(1); //  (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets["Sheet1"];
                if (worksheet == null)
                {
                    Dispose();
                    return false;
                }               
                
                //3 获得模板的sheet                int rowIndex;
                int colIndex;
                rowIndex = 1;
                colIndex = 0;                Excel.Range range = null;
                object obj1=app.Cells[1, 1];
                object obj2 = app.Cells[dt.Rows.Count + 1, dt.Columns.Count];
                range = worksheet.get_Range(obj1, obj2);
               // range = worksheet.get_Range(app.Cells[1, 1], app.Cells[dt.Rows.Count + 1, dt.Columns.Count]);                foreach (string columnName in ColumnsName)
                {
                    colIndex = colIndex + 1;
                    range[rowIndex, colIndex] = columnName;
                }
                colIndex = 0;
                //rowIndex = rowIndex + 1;                for (int row = 0; row < dt.Rows.Count; row++)
                {
                    rowIndex = rowIndex + 1;
                    colIndex = 0;                    for (int col = 0; col < dt.Columns.Count; col++)
                    {
                        colIndex = colIndex + 1;                      
                        DataRow dr = dt.Rows[row];
                        range[row+2, col+1] = dt.Rows[row][col];
                       
                    }
                }                range.Borders.LineStyle = 1;
                range.HorizontalAlignment = Excel.Constants.xlCenter;                range.Cells.Font.Name = excelFontInfo.P_FontName;
                range.Cells.Font.Size = excelFontInfo.P_FontSize;
                //8 判断要保存Xls文件是否存在;如果存在则删除
                if (File.Exists(ExportExcelFileName))
                {
                    File.Delete(ExportExcelFileName);
                }                workbook.SaveAs(ExportExcelFileName, miss, miss, miss, miss, miss, Excel.XlSaveAsAccessMode.xlExclusive, miss, miss, miss, miss, miss);                if (!File.Exists(ExportExcelFileName))
                {
                    Dispose();
                    return false;
                }
                Dispose();                return true;
            }            catch (Exception ex)
            {
                Dispose();
                ErrMSG = ex.Message;
                throw ex;
            }
        }
我现在这么写正确,加入了模板导出数据,但是这句  worksheet = (Excel._Worksheet)sheets.get_Item(1); //  (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets["Sheet1"];
如果换成了注释那句,并且执行了range = worksheet.get_Range(app.Cells[1, 1], app.Cells[dt.Rows.Count + 1, dt.Columns.Count]);
这里就会出错,而如果 worksheet = (Excel._Worksheet)sheets.get_Item(1); 这句就不会出错,求解。
我现在想将数据写到sheet2中,,