导出这里有两个一个是直接数据库查到数据后导出,一个是到页面点击下载导出
一
1.到数据库查询需要打印的数据,改为DataSet类型传入下面的方法
2.这个自动生成后地址为:我的文档
#region DataSetToExcel public static bool DataSetToExcel(DataSet dataSet, bool isShowExcle) { try { System.Data.DataTable dataTable = dataSet.Tables[0]; int rowNumber = dataTable.Rows.Count;//条数 int columnNumber = dataTable.Columns.Count;//列数 int colIndex = 0; if (rowNumber == 0) { LogHelper.WriteErrorLog(string.Format("DataSetToExcel:rowNumber:{0},DateTime:{1},dataSet:{2}", rowNumber, DateTime.Now, dataSet)); return false; } //建立Excel对象 Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet); Microsoft.Office.Interop.Excel.Worksheet worksheet = workbook.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet; excel.Visible = isShowExcle; Microsoft.Office.Interop.Excel.Range range; //生成字段名称 foreach (DataColumn col in dataTable.Columns) { colIndex++; excel.Cells[1, colIndex] = col.ColumnName; } object[,] objData = new object[rowNumber, columnNumber]; //遍历 for(int i=0;i) { for(int j=0;j ) { objData[i, j] = dataTable.Rows[i][j]; } } // 写入Excel range = worksheet.Range[excel.Cells[2, 1], excel.Cells[rowNumber + 1, columnNumber]]; //range.NumberFormat = "@";//设置单元格为文本格式 range.Value2 = objData; worksheet.Range[excel.Cells[2, 1], excel.Cells[rowNumber + 1, 1]].NumberFormat = "yyyy-m-d h:mm"; return true; } catch (Exception ex) { LogHelper.WriteErrorLog(string.Format("DataSetToExcel:ex:{0},DateTime:{1}", ex, DateTime.Now)); return false; } } #endregion
二
(一).导出满足条件的数据
1.操作页面创建方法实现后台操作,页面方法如下
<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"> <li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active"><a href="#tabs-1">XX记录a>li> <li><label onclick="javascript:excelsA()" style="color:azure;" id="label1"> 导出数据EXCELlabel>li> ul> <script type="text/javascript"> var count = 0; function labelA() { alert("请稍等数据量较大,正在努力导出!"); } function excelsA() { if (count == 0) { alert("请等待,注:生成中请勿重复点击!"); count++; $.ajax({ type: "POST", url: "GetExcel", contentType: "application/json; charset=utf-8", data: "{Type:'EG',Time1:'" + document.getElementById("BetTime1").value + "',Time2:'" + document.getElementById("BetTime2").value + "'}", success: function (msg) { count = 0; if (msg.indexOf("该时间段:") >= 0) { alert(msg); } else { excels(msg); } } }); } else { $("#label1").click(labelA);//防止导出时多次操作 } } var timer; function getExplorer() {//获取浏览器 var explorer = window.navigator.userAgent; if (explorer.indexOf("MSIE") >= 0 || (explorer.indexOf("Windows NT 6.1;") >= 0 && explorer.indexOf("Trident/7.0;") >= 0)) { return 'ie'; } else if (explorer.indexOf("Firefox") >= 0) { return 'Firefox'; } else if (explorer.indexOf("Chrome") >= 0) { return 'Chrome'; } else if (explorer.indexOf("Opera") >= 0) { return 'Opera'; } else if (explorer.indexOf("Safari") >= 0) { return 'Safari'; } } function excels(table) { if (getExplorer() == 'ie') { var curTbl = document.getElementById(table); var oXl = new ActiveXObject("Excel.Application");//创建AX对象excel var oWB = oXL.Workbooks.Add();//获取workbook对象 var xlsheet = oWB.Worksheets(1);//激活当前sheet var sel = document.body.createTextRange(); sel.moveToElementText(curTbl);//把表格中的内容移到TextRange中 sel.select;//全选TextRange中内容 sel.execCommand("Copy");//复制TextRange中内容 xlsheet.Paste();//粘贴到活动的EXCEL中 oXL.Visible = true;//设置excel可见属性 try { var filename = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls"); } catch (e) { window.print("Nested catch caught " + e); } finally { oWB.SaveAs(filename); oWB.Close(savechanges = false); oXL.Quit(); oXL = null;//结束excel进程,退出完成 timer = window.setInterval("Cleanup();", 1); } } else { tableToExcel(table); } } function Cleanup() { window.clearInterval(timer); CollectGarbage();//CollectGarbage,是IE的一个特有属性,用于释放内存的 } var tableToExcel = (function () { var uri = 'data:application/vnd.ms-excel;base64,', template = '{table}
', base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }, format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }; return function (table, name) { debugger; var ctx = { worksheet: name || 'Worksheet', table: table }; window.location.href = uri + base64(format(template, ctx)) } })(); script>
2.后台操作为
到数据库查询数据,拼接为HTML代码,也可以加上一些样式
(二).导出当前页面的数据
<li><input id="Button1" type="button" value="导出数据EXCEL" onclick="javascript:excels('DataTable')" />li> ul> <script type="text/javascript"> var timer; function getExplorer() {//获取浏览器 var explorer = window.navigator.userAgent; if (explorer.indexOf("MSIE") >= 0 || (explorer.indexOf("Windows NT 6.1;") >= 0 && explorer.indexOf("Trident/7.0;") >= 0)) { return 'ie'; } else if (explorer.indexOf("Firefox") >= 0) { return 'Firefox'; } else if (explorer.indexOf("Chrome") >= 0) { return 'Chrome'; } else if (explorer.indexOf("Opera") >= 0) { return 'Opera'; } else if (explorer.indexOf("Safari") >= 0) { return 'Safari'; } } function excels(table) { if (confirm("导出当前页数据")) { if (getExplorer() == 'ie') { var curTbl = document.getElementById(table); var oXl = new ActiveXObject("Excel.Application");//创建AX对象excel var oWB = oXL.Workbooks.Add();//获取workbook对象 var xlsheet = oWB.Worksheets(1);//激活当前sheet var sel = document.body.createTextRange(); sel.moveToElementText(curTbl);//把表格中的内容移到TextRange中 sel.select;//全选TextRange中内容 sel.execCommand("Copy");//复制TextRange中内容 xlsheet.Paste();//粘贴到活动的EXCEL中 oXL.Visible = true;//设置excel可见属性 try { var filename = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls"); } catch (e) { window.print("Nested catch caught " + e); } finally { oWB.SaveAs(filename); oWB.Close(savechanges = false); oXL.Quit(); oXL = null;//结束excel进程,退出完成 timer = window.setInterval("Cleanup();", 1); } } else { tableToExcel("DataTable"); } } else { alert("导出原数据"); alert("该功能请稍后"); } } function Cleanup() { window.clearInterval(timer); CollectGarbage();//CollectGarbage,是IE的一个特有属性,用于释放内存的 } var tableToExcel = (function () { var uri = 'data:application/vnd.ms-excel;base64,', template = '{table}
', base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }, format = function (s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }) }; return function (table, name) { debugger; if (!table.nodeType) table = document.getElementById(table); var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }; window.location.href = uri + base64(format(template, ctx)) } })(); script>