Excel报表方法
using Excel = Microsoft.Office.Interop.Excel;
private void Exceltest()
{
//在创建Excel Application前先将已经打开的Excel资源释放掉
EndExcelProcesse();
//指定模板文件
string targetFile = Server.MapPath("~/Resource/Exercise/1/Nomalr.xlsx");
//打开复制后的文件X
object missing = Missing.Value;
Excel.Application myExcel = new Excel.Application();
//打开模板文件
myExcel.Application.Workbooks.Open(targetFile, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
//选中有数据的Cells
Excel._Worksheet mySheet = (Excel._Worksheet)myExcel.Worksheets[1];
Excel.Range r = mySheet.get_Range(mySheet.Cells[1, 1], mySheet.Cells[dt.Rows.Count + 2, dt.Columns.Count]);
r.Select();
//不单独显示Excel,最后在IE中显示
myExcel.Visible = false;
//第一行为报表的标题
myExcel.Cells[1, 1] = "用模板导出的报表";
//逐行写入数据,数组中第一行为报表的列标题
for (int i = 0; i < dt.Columns.Count; i++)
{
myExcel.Cells[2, 1 + i] = dt.Columns[i].Caption; ;
}
//为报表填充数据并设置显示上下标格式
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
myExcel.Cells[3 + i, 1 + j] = dt.Rows[i][j];
}
mySheet.Columns.AutoFit();
}
myExcel.Workbooks[1].RefreshAll();
Excel.Workbook myBook = myExcel.Workbooks[1];
//myBook.Save();
myBook.SaveCopyAs(Server.MapPath("~/Resource/Exercise/1/" + Session["Flag"].ToString() + ".xlsx"));
myBook.Close(false, missing, missing);
myBook = null;
myExcel.Quit();
myExcel = null;
GC.Collect();
}
protected void EndExcelProcesse()
{
try
{
Process[] myProcesses = Process.GetProcessesByName("excel");
foreach (Process instance in myProcesses)
{
instance.Kill();
}
}
catch
{
}
}