//调用的方法
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
string filename = StartupFilePath + "\\a.xlsx" + ;
app.Visible = false; //不显示EXCEL
app.DisplayAlerts = false; //不提示信息
app.ScreenUpdating = false; //停止更新屏幕,加快速度
Workbooks wbs = app.Workbooks; //获取工作薄
_Workbook wb = wbs.Open(filename); //打开文件
Sheets shs = wb.Worksheets; //文件中的Sheets
System.Data.DataTable table = dbh.getDataSet(DealFun(sql)).Tables[0];
CopyDataToSheet(table, shs[1]); //调用方法,将DataTable里的数据写入到第2个Sheet中
wb.Save(); //保存
wb.Close(); //关闭工作薄
app.Quit(); //关闭EXCEL
//快速写入(先写入数组,然后一次性将数组写入到EXCEL中)
private void CopyDataToSheet(System.Data.DataTable Table, _Worksheet Sheet)
{
int colCount, rowCount;
colCount = Table.Columns.Count;
rowCount = Table.Rows.Count;
Range range;
//写入标题行
range = Sheet.get_Range("A1", Missing.Value);
range = range.get_Resize(1, colCount);
object[,] headerData = new object[1, colCount];
for (int iCol = 0; iCol < colCount; iCol++)
{
headerData[0, iCol] = Table.Columns[iCol].ColumnName;
}
range.set_Value(Missing.Value, headerData);
//写入数据行
range = Sheet.get_Range("A2", Missing.Value);
range = range.get_Resize(rowCount, colCount);
object[,] cellData = new object[rowCount, colCount];
for (int iRow = 0; iRow < rowCount; iRow++)
{
for (int iCol = 0; iCol < colCount; iCol++)
{
cellData[iRow, iCol] = Table.Rows[iRow][iCol].ToString();
}
}
range.set_Value(Missing.Value, cellData);
}
//龟速写入,一个单元格一个的写入,不建议使用。
private void CopyDataToSheet2(System.Data.DataTable Table, _Worksheet Sheet)
{
int i_col, i_row;
i_col=1;
i_row=1;
foreach (DataColumn column in Table.Columns) //写标题
{
Sheet.Cells[i_row, i_col] = column.ColumnName;
i_col++;
}
i_row=2;
foreach (DataRow dr in Table.Rows) //写数据
{
i_col = 1;
foreach (object obj in dr.ItemArray)
{
Sheet.Cells[i_row, i_col] = dr[i_col - 1].ToString();
i_col++;
}
i_row++;
}
}