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中,,
{
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中,,
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货