积极答复者
C(#)如何将指定的asp页面<table>导出到excel?

问题
-
C(#)如何将指定的asp页面<table>导出到excel?
并且能够弹出一个保存路径的对话框(就像saveFileDialog一样)。- 已移动 孟宪会Moderator 2009年6月5日 7:06 ([Loc]From:.NET Framework 一般性问题讨论区)
答案
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title> 无标题页 </title> <style type="text/css"> .s8 { font-family: Arial; font-size: 12px; color: #000000; font-style: normal; background-color: transparent; border-color:#FFFFFF; border-style: solid; border-left-width: 1px; border-right-width: 1px; border-top-width: 1px; border-bottom-width: 1px; line-height:20px; } .s9 { font-family: Arial; font-size: 14px; color: #000000; font-style: normal; background-color: transparent; border-color:#FFFFFF; border-style: solid; border-left-width: 1px; border-right-width: 1px; border-top-width: 1px; border-bottom-width: 1px; font-weight: bold; line-height:25px; } .s7 { vertical-align:middle; text-align:left; } <!-- .style1 { font-size: 14px; font-weight: bold;} .input{border:1px solid #cccccc; background-color:#f8f8F8;} textarea{background-color:#f8f8F8} --> #blo{background-color:#888;position:absolute;color:#fff} #blo ul{margin:5px;} #blo li{cursor:pointer;} ul{list-style:none;} *{margin:0px;padding:0px;} </style> <script type="text/javascript" > function gethtml() { var fTableElement,strcell,rows,cols,style,excelstr; fTableElement = document.getElementById("energyinfo"); excelstr = "<html><head><!--<xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>工作表标题</x:Name><x:WorksheetOptions><x:print><x:ValidPrinterInfo /></x:print></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head>"; excelstr += "<table border='1'>"; for (i = 0; i < fTableElement.rows.length; i++) { excelstr += "<tr>"; for (j = 0; j < fTableElement.rows[i].cells.length; j++) { rows = fTableElement.rows[i].cells[j].rowSpan; cols = fTableElement.rows[i].cells[j].colSpan; style = fTableElement.rows[i].cells[j].align; excelstr += "<td colspan=" + cols + " rowspan=" + rows + " align=" + style + ">"; for(k = 0; k < fTableElement.rows(i).cells(j).children.length;k++){ if(fTableElement.rows(i).cells(j).children[k].type == undefined){ excelstr += fTableElement.rows(i).cells(j).children[k].innerText; }else{ excelstr += fTableElement.rows(i).cells(j).children[k].value; } } excelstr += "</td>"; } excelstr += "</tr>"; } excelstr += "</table></html>"; return excelstr; } function ExportToExcel(){ var str; str = gethtml(); //window.clipboardData.setData("Text",document.all('energyinfo').outerHTML); try { var ExApp = new ActiveXObject("Excel.Application"); var ExWBk = ExApp.workbooks.add(); var ExWSh = ExWBk.worksheets(1); ExApp.DisplayAlerts = false; ExWSh.Columns("A").ColumnWidth = 9; ExWSh.Columns("B").ColumnWidth = 9; ExWSh.Columns("C").ColumnWidth = 25; ExWSh.Columns("D").ColumnWidth = 15; ExWSh.Columns("E").ColumnWidth = 28; } catch(e) { alert("您的电脑没有安装Microsoft Excel软件!"); return false; } window.clipboardData.setData("Text",str); ExWBk.worksheets(1).Paste; ExApp.visible = true; } </script> <link href="../App_Themes/default/styles.css" type="text/css" rel="stylesheet" /></head> <body onload ="getTMonth('statisticsyear','statisticsMonth')"> <form name="form1" method="post" action="DataSearch.aspx" id="form1"> <div> <table id ="menu" width="100%" border="0"> <tr style="vertical-align:top" > <td id="_left" style="width:30%" align ="center"> <input type ="button" id ="saveexcel1" value="导出Excel" onclick ="ExportToExcel()" /> </td> <td id ="main" style="width:100%"> <table id="energyinfo" cellspacing="0" cellpadding="0" border="0" bgcolor="#E7E7E7" border="0" style="width:100%;border-collapse:collapse;display:inline"> <tr id="TableRow1"> <td id="TableCell1" align="center" class="s9" colspan="5"><span id="Label2">一、基本信息</span></td> </tr><tr id="TableRow2"> <td id="TableCell2" align="left" class="s8" colspan="3"><span id="Label1">单位名称:</span><input name="companyName" type="text" value="中国移动" readonly="readonly" id="companyName" style="width:140px;" /></td><td id="TableCell3" align="right" class="s8" colspan="2"><span id="Label3">联系电话:</span><input name="statisticsYM" type="text" value="010-00000000" readonly="readonly" id="statisticsYM" style="width:90px;" /></td> </tr><tr id="TableRow3"> <td id="TableCell4" align="left" class="s8" colspan="3"><span id="Label4">建筑面积:</span><input name="jianzhuMianJi" type="text" value="80009.00" readonly="readonly" id="jianzhuMianJi" style="width:70px;" /><span id="Label6">平方米</span></td><td id="TableCell5" align="right" class="s8" colspan="2"><span id="Label5">单位人数:</span><input name="yongNengRenshu" type="text" value="10008" readonly="readonly" id="yongNengRenshu" style="width:90px;" /></td> </tr><tr id="TableRow4"> <td id="TableCell6" align="center" class="s9" colspan="5"><span id="Label7">二、情况</span></td> </tr><tr id="TableRow5"> <td id="TableCell7" align="center" class="s8" colspan="3" style="width:50%"><span id="Label8">甲</span></td><td id="TableCell8" align="center" class="s8" style="width:20%"><span id="Label9">乙</span></td><td id="TableCell9" align="center" class="s8" style="width:30%"><span id="Label10">备注</span></td> </tr><tr id="TableRow6"> <td id="TableCell10" align="center" class="s8" rowspan="8" style="width:10%"><span id="Label11">A</span></td><td id="TableCell11" align="center" class="s8" colspan="2"><span id="Label12">B</span></td><td id="TableCell12" align="center" class="s8"><input name="zongDian" type="text" value="100" readonly="readonly" id="zongDian" style="width:90px;" /></td><td id="TableCell13" class="s8"> </td> </tr><tr id="TableRow7"> <td id="TableCell14" align="center" class="s8" colspan="2"><span id="Label13">C</span></td><td id="TableCell15" align="center" class="s8"><input name="zongFeiYong" type="text" value="101" readonly="readonly" id="zongFeiYong" style="width:90px;" /></td><td id="TableCell16" class="s8"> </td> </tr><tr id="TableRow8"> <td id="TableCell17" align="center" class="s8" rowspan="6" style="width:15%"><span id="Label14">D</span></td><td id="TableCell18" align="right" class="s8" style="width:25%"><span id="Label15">E</span></td><td id="TableCell19" align="center" class="s8"><input name="zhaoMingDian" type="text" value="11" readonly="readonly" id="zhaoMingDian" style="width:90px;" /></td><td id="TableCell20" class="s8" rowspan="6"><span id="Label20">注:</span></td> </tr><tr id="TableRow9"> <td id="TableCell21" align="right" class="s8"><span id="Label16">F</span></td><td id="TableCell22" align="center" class="s8"><input name="kongTiaoDian" type="text" value="12" readonly="readonly" id="kongTiaoDian" style="width:90px;" /></td> </tr><tr id="TableRow10"> <td id="TableCell23" align="right" class="s8"><span id="Label17">G</span></td><td id="TableCell24" align="center" class="s8"><input name="banGongdian" type="text" value="13" readonly="readonly" id="banGongdian" style="width:90px;" /></td> </tr><tr id="TableRow11"> <td id="TableCell25" align="right" class="s8"><span id="Label108">H</span></td><td id="TableCell26" align="center" class="s8"><input name="dianTiDian" type="text" value="14" readonly="readonly" id="dianTiDian" style="width:90px;" /></td> </tr><tr id="TableRow12"> <td id="TableCell27" align="right" class="s8"><span id="Label18">I</span></td><td align="center" class="s8"><input name="zhuanYeSheBeiDian" type="text" value="15" readonly="readonly" id="zhuanYeSheBeiDian" style="width:90px;" /></td> </tr><tr> <td align="right" class="s8"><span id="Label19">J</span></td><td align="center" class="s8"><input name="qiTaDian" type="text" value="35" readonly="readonly" id="qiTaDian" style="width:90px;" /></td> </tr> </table> </td> </tr> </table> </form> </body> </html>
综合大家的知识。得出了比较完美的excel出力代码。
希望大家能够完善代码,让单元格格式也出力。
让大家齐分享。
学习,学习,再学习 = 成功!- 已标记为答案 心随你飞 2009年6月8日 7:25
全部回复
-
你好,下面是通过 Excel 组件实现
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="X200906011053.aspx.cs" Inherits="Grid_X200906011053" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script type="text/javascript"> function ExportToExcel(fTableElement) { var fApplication; try { fApplication = new ActiveXObject("Excel.Application"); } catch (e) { alert("生成“Excel”需要安装“Excel”软件,请确主认您是否安装了“Excel”软件!并且允许使用 Active X"); return; } var fWorkbook = fApplication.Workbooks.Add(); var fWorkSheet = fWorkbook.ActiveSheet; var fRowCount = fTableElement.rows.length; var fColCount = fTableElement.rows[0].cells.length; for (i = 0; i < fRowCount; i++) { for (j = 0; j < fColCount; j++) { fWorkSheet.Cells(i + 1, j + 1).value = fTableElement.rows(i).cells(j).innerText; } } // range style fWorkSheet.Range(fWorkSheet.Cells(1, 1), fWorkSheet.Cells(fRowCount, fColCount)).Interior.ColorIndex = 2; fWorkSheet.Range(fWorkSheet.Cells(1, 1), fWorkSheet.Cells(fRowCount, fColCount)).Borders.ColorIndex = 1; fWorkSheet.Range(fWorkSheet.Cells(1, 1), fWorkSheet.Cells(fRowCount, fColCount)).RowHeight = 16; fWorkSheet.Range(fWorkSheet.Cells(1, 1), fWorkSheet.Cells(fRowCount, fColCount)).Font.Name = "微软雅黑"; fWorkSheet.Range(fWorkSheet.Cells(1, 1), fWorkSheet.Cells(fRowCount, fColCount)).Font.Size = 10; fWorkSheet.Range(fWorkSheet.Cells(1, 1), fWorkSheet.Cells(fRowCount, fColCount)).HorizontalAlignment = -4108; fWorkSheet.Range(fWorkSheet.Cells(1, 1), fWorkSheet.Cells(fRowCount, fColCount)).VerticalAlignment = -4108; fApplication.Visible = true; } </script> </head> <body> <form id="form1" runat="server"> <asp:GridView ID="GridView1" runat="server"> </asp:GridView> <input type="button" value="Export" onclick="ExportToExcel(document.getElementById('GridView1'));" /> </form> </body> </html>
知识改变命运,奋斗成就人生! -
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title> 无标题页 </title> <style type="text/css"> .s8 { font-family: Arial; font-size: 12px; color: #000000; font-style: normal; background-color: transparent; border-color:#FFFFFF; border-style: solid; border-left-width: 1px; border-right-width: 1px; border-top-width: 1px; border-bottom-width: 1px; line-height:20px; } .s9 { font-family: Arial; font-size: 14px; color: #000000; font-style: normal; background-color: transparent; border-color:#FFFFFF; border-style: solid; border-left-width: 1px; border-right-width: 1px; border-top-width: 1px; border-bottom-width: 1px; font-weight: bold; line-height:25px; } .s7 { vertical-align:middle; text-align:left; } <!-- .style1 { font-size: 14px; font-weight: bold;} .input{border:1px solid #cccccc; background-color:#f8f8F8;} textarea{background-color:#f8f8F8} --> #blo{background-color:#888;position:absolute;color:#fff} #blo ul{margin:5px;} #blo li{cursor:pointer;} ul{list-style:none;} *{margin:0px;padding:0px;} </style> <script type="text/javascript" > function gethtml() { var fTableElement,strcell,rows,cols,style,excelstr; fTableElement = document.getElementById("energyinfo"); excelstr = "<html><head><!--<xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>工作表标题</x:Name><x:WorksheetOptions><x:print><x:ValidPrinterInfo /></x:print></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head>"; excelstr += "<table border='1'>"; for (i = 0; i < fTableElement.rows.length; i++) { excelstr += "<tr>"; for (j = 0; j < fTableElement.rows[i].cells.length; j++) { rows = fTableElement.rows[i].cells[j].rowSpan; cols = fTableElement.rows[i].cells[j].colSpan; style = fTableElement.rows[i].cells[j].align; excelstr += "<td colspan=" + cols + " rowspan=" + rows + " align=" + style + ">"; for(k = 0; k < fTableElement.rows(i).cells(j).children.length;k++){ if(fTableElement.rows(i).cells(j).children[k].type == undefined){ excelstr += fTableElement.rows(i).cells(j).children[k].innerText; }else{ excelstr += fTableElement.rows(i).cells(j).children[k].value; } } excelstr += "</td>"; } excelstr += "</tr>"; } excelstr += "</table></html>"; return excelstr; } function ExportToExcel(){ var str; str = gethtml(); //window.clipboardData.setData("Text",document.all('energyinfo').outerHTML); try { var ExApp = new ActiveXObject("Excel.Application"); var ExWBk = ExApp.workbooks.add(); var ExWSh = ExWBk.worksheets(1); ExApp.DisplayAlerts = false; ExWSh.Columns("A").ColumnWidth = 9; ExWSh.Columns("B").ColumnWidth = 9; ExWSh.Columns("C").ColumnWidth = 25; ExWSh.Columns("D").ColumnWidth = 15; ExWSh.Columns("E").ColumnWidth = 28; } catch(e) { alert("您的电脑没有安装Microsoft Excel软件!"); return false; } window.clipboardData.setData("Text",str); ExWBk.worksheets(1).Paste; ExApp.visible = true; } </script> <link href="../App_Themes/default/styles.css" type="text/css" rel="stylesheet" /></head> <body onload ="getTMonth('statisticsyear','statisticsMonth')"> <form name="form1" method="post" action="DataSearch.aspx" id="form1"> <div> <table id ="menu" width="100%" border="0"> <tr style="vertical-align:top" > <td id="_left" style="width:30%" align ="center"> <input type ="button" id ="saveexcel1" value="导出Excel" onclick ="ExportToExcel()" /> </td> <td id ="main" style="width:100%"> <table id="energyinfo" cellspacing="0" cellpadding="0" border="0" bgcolor="#E7E7E7" border="0" style="width:100%;border-collapse:collapse;display:inline"> <tr id="TableRow1"> <td id="TableCell1" align="center" class="s9" colspan="5"><span id="Label2">一、基本信息</span></td> </tr><tr id="TableRow2"> <td id="TableCell2" align="left" class="s8" colspan="3"><span id="Label1">单位名称:</span><input name="companyName" type="text" value="中国移动" readonly="readonly" id="companyName" style="width:140px;" /></td><td id="TableCell3" align="right" class="s8" colspan="2"><span id="Label3">联系电话:</span><input name="statisticsYM" type="text" value="010-00000000" readonly="readonly" id="statisticsYM" style="width:90px;" /></td> </tr><tr id="TableRow3"> <td id="TableCell4" align="left" class="s8" colspan="3"><span id="Label4">建筑面积:</span><input name="jianzhuMianJi" type="text" value="80009.00" readonly="readonly" id="jianzhuMianJi" style="width:70px;" /><span id="Label6">平方米</span></td><td id="TableCell5" align="right" class="s8" colspan="2"><span id="Label5">单位人数:</span><input name="yongNengRenshu" type="text" value="10008" readonly="readonly" id="yongNengRenshu" style="width:90px;" /></td> </tr><tr id="TableRow4"> <td id="TableCell6" align="center" class="s9" colspan="5"><span id="Label7">二、情况</span></td> </tr><tr id="TableRow5"> <td id="TableCell7" align="center" class="s8" colspan="3" style="width:50%"><span id="Label8">甲</span></td><td id="TableCell8" align="center" class="s8" style="width:20%"><span id="Label9">乙</span></td><td id="TableCell9" align="center" class="s8" style="width:30%"><span id="Label10">备注</span></td> </tr><tr id="TableRow6"> <td id="TableCell10" align="center" class="s8" rowspan="8" style="width:10%"><span id="Label11">A</span></td><td id="TableCell11" align="center" class="s8" colspan="2"><span id="Label12">B</span></td><td id="TableCell12" align="center" class="s8"><input name="zongDian" type="text" value="100" readonly="readonly" id="zongDian" style="width:90px;" /></td><td id="TableCell13" class="s8"> </td> </tr><tr id="TableRow7"> <td id="TableCell14" align="center" class="s8" colspan="2"><span id="Label13">C</span></td><td id="TableCell15" align="center" class="s8"><input name="zongFeiYong" type="text" value="101" readonly="readonly" id="zongFeiYong" style="width:90px;" /></td><td id="TableCell16" class="s8"> </td> </tr><tr id="TableRow8"> <td id="TableCell17" align="center" class="s8" rowspan="6" style="width:15%"><span id="Label14">D</span></td><td id="TableCell18" align="right" class="s8" style="width:25%"><span id="Label15">E</span></td><td id="TableCell19" align="center" class="s8"><input name="zhaoMingDian" type="text" value="11" readonly="readonly" id="zhaoMingDian" style="width:90px;" /></td><td id="TableCell20" class="s8" rowspan="6"><span id="Label20">注:</span></td> </tr><tr id="TableRow9"> <td id="TableCell21" align="right" class="s8"><span id="Label16">F</span></td><td id="TableCell22" align="center" class="s8"><input name="kongTiaoDian" type="text" value="12" readonly="readonly" id="kongTiaoDian" style="width:90px;" /></td> </tr><tr id="TableRow10"> <td id="TableCell23" align="right" class="s8"><span id="Label17">G</span></td><td id="TableCell24" align="center" class="s8"><input name="banGongdian" type="text" value="13" readonly="readonly" id="banGongdian" style="width:90px;" /></td> </tr><tr id="TableRow11"> <td id="TableCell25" align="right" class="s8"><span id="Label108">H</span></td><td id="TableCell26" align="center" class="s8"><input name="dianTiDian" type="text" value="14" readonly="readonly" id="dianTiDian" style="width:90px;" /></td> </tr><tr id="TableRow12"> <td id="TableCell27" align="right" class="s8"><span id="Label18">I</span></td><td align="center" class="s8"><input name="zhuanYeSheBeiDian" type="text" value="15" readonly="readonly" id="zhuanYeSheBeiDian" style="width:90px;" /></td> </tr><tr> <td align="right" class="s8"><span id="Label19">J</span></td><td align="center" class="s8"><input name="qiTaDian" type="text" value="35" readonly="readonly" id="qiTaDian" style="width:90px;" /></td> </tr> </table> </td> </tr> </table> </form> </body> </html>
综合大家的知识。得出了比较完美的excel出力代码。
希望大家能够完善代码,让单元格格式也出力。
让大家齐分享。
学习,学习,再学习 = 成功!- 已标记为答案 心随你飞 2009年6月8日 7:25
-
function XExportToExcel() { var fHtml = gethtml(); var fSaveWindow = window.open(); fSaveWindow.document.open("text/html", "gb2312"); fSaveWindow.document.write(fHtml); fSaveWindow.document.execCommand("SaveAs", true, "table.xls"); fSaveWindow.close(); }
在你的基础上做了一个简单实现,不同点就是可以不依赖 ExcelApplication
知识改变命运,奋斗成就人生!