比较简单的控制excel,只是实现了把数据库里的数据导进excel,没有对excel进行更多的控制,比如样式
代码如下:
在按钮事件里写:
Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
excel.Visible = false;
object ms = Type.Missing;
Excel.Workbook wk = excel.Workbooks.Add(ms);
Excel.Worksheet ws = wk.Worksheets[1] as Excel.Worksheet;
Common.Data.IDataProvider myProvider = Common.Frame.DataOper.GetSystemDataProvider();//我的连接数据库
string sql = "SELECT id ,classid ,begintime ,endtime,roomid,allsite from xx";
DataTable dt = myProvider.GetData(sql);
for (int i = 0; i < dt.Rows.Count; i++)//此处循环,输入的是列明
{
ws.Cells[1, i + 1] = dt.Rows[0][i].ToString();
}
for (int i = 0; i < dt.Rows.Count; i++)//此处循环,输入数据
{
for (int j = 0; j < 6; j++)
{
ws.Cells[i + 2, j + 1] = dt.Rows[i][j].ToString();
}
}
if (System.IO.File.Exists(this.MapPath("~/excel/a.xls")))
{
System.IO.File.Delete(this.MapPath("~/excel/a.xls"));
}
wk.SaveAs(this.MapPath("~/excel/a.xls"), ms, ms, ms, ms, ms, Excel.XlSaveAsAccessMode.xlShared, ms, ms, ms, ms, ms);
excel.Quit();//一定要关闭
System.Runtime.InteropServices.Marshal.ReleaseComObject(ws);//垃圾处理
System.Runtime.InteropServices.Marshal.ReleaseComObject(wk);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
ws = null;
wk = null;
excel = null;
GC.Collect();
this.ClientScript.RegisterStartupScript(GetType(), Guid.NewGuid().ToString(), "window.open('../excel/a.xls');", true);//在页面打开excel