Table转变为Excel

本文介绍了一种利用StringBuilder动态生成HTML表格的方法,并详细展示了如何将生成的表格内容导出为Excel文件的具体实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

StringBuilder sbd = new StringBuilder();  
sbd.Append("<table id='tb1' width='60%' border='1' cellspacing='0' cellpadding='0' style='text-align:center'>");  //头
sbd.Append("<h2 style='text-align:center'>标题</h2>");//标题
sbd.Append("<tbody><tr  style='text-align:center'><td  rowspan='2'>序号</td><td rowspan='2'>姓名</td>);//
sbd.AppendFormat("<td>{0}</td><td>{1}</td><td>{2}</td>", tb1,tb2,tb3);//内容,占位
sbd.Append("</tbody>");
sbd.Append("</table>");//结尾
sbd.Append("<table width='60%'>");//两段内容
sbd.Appendt("</br><tr><td  colspan='3'><span style='font-size:30px'>统计</span></td></tr>");//内容
sbd.Append("</table>");//结尾

string strTable = sbd.ToString();//转换

HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(“表名”) + ".xlsx");
HttpContext.Current.Response.Charset = "utf-8";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
HttpContext.Current.Response.ContentType = "application/ms-excel";//其他类型转换百度
HttpContext.Current.Response.Write(strTable);
HttpContext.Current.Response.End();
还不是很完善,可以自己加以封装 // JavaScript Document var BoxWidth = 700// 资料表显示宽度 ( 不含卷轴 ) var ShowLine = 15// 资料表显示列数 var RsHeight = 21// 资料列高度 var LockCols = 1// 要锁定的栏位数 ( 由左至右 ) function WriteTable(){// 写入表格 var iBoxWidth=BoxWidth var NewHTML="<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td><div style=\"width:100%;overflow-x:scroll\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>" for(i=0;i<DataTitles.length;i++){ if(i<LockCols){ var cTitle=DataTitles[i].split("#") iBoxWidth-=cTitle[1] var DynTip=((i+1)==LockCols)?"解除锁定":"锁定此栏位" NewHTML+="<td><div class=\"title\" style=\"width:"+cTitle[1]+"px;height:"+RsHeight+"px\" title=\""+DynTip+"\" onclick=\"ResetTable("+i+")\">"+cTitle[0]+"</div></td>" } } NewHTML+="</tr><tr><td colspan=\""+LockCols+"\"><div id=\"DataFrame1\" style=\"position:relative;width:100%;overflow:hidden\"><div id=\"DataGroup1\" style=\"position:relative\"></div></div></td></tr></table></div></td><td valign=\"top\"><div style=\"width:"+iBoxWidth+"px;overflow-x:scroll\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>" for(i=0;i<DataTitles.length;i++){ if(i>=LockCols){ var cTitle=DataTitles[i].split("#") NewHTML+="<td><div class=\"title\" style=\"width:"+cTitle[1]+"px;height:"+RsHeight+"px\" title=\"锁定此栏位\" onclick=\"ResetTable("+i+")\">"+cTitle[0]+"</div></td>" } } NewHTML+="</tr><tr><td colspan=\""+(DataTitles.length-LockCols)+"\"><div id=\"DataFrame2\" style=\"position:relative;width:100%;overflow:hidden\"><div id=\"DataGroup2\" style=\"position:relative\"></div></div></td></tr></table></div></td><td valign=\"top\"><div id=\"DataFrame3\" style=\"position:relative;background:#000;overflow-y:scroll\" onscroll=\"SYNC_Roll()\"><div id=\"DataGroup3\" style=\"position:relative;width:1px;visibility:hidden\"></div></div></td></tr></table>" DataTable.innerHTML=NewHTML ApplyData() } function ApplyData(){// 写入资料 var NewHTML="<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">" for(i=0;i<DataFields.length;i++){ NewHTML+="<tr>" for(j=0;j<DataTitles.length;j++){ if(j<LockCols){ var cTitle=DataTitles[j].split("#") NewHTML+="<td><div class=\"cdata\" style=\"width:"+cTitle[1]+"px;height:"+RsHeight+"px;text-align:"+cTitle[2]+"\">"+DataFields[i][j]+"</div></td>" } } NewHTML+="</tr>" } NewHTML+="</table>" DataGroup1.innerHTML=NewHTML var NewHTML="<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">" for(i=0;i<DataFields.length;i++){ NewHTML+="<tr>" for(j=0;j<DataTitles.length;j++){ if(j>=LockCols){ var cTitle=DataTitles[j].split("#") NewHTML+="<td><div class=\"cdata\" style=\"width:"+cTitle[1]+"px;height:"+RsHeight+"px;text-align:"+cTitle[2]+"\">"+DataFields[i][j]+"</div></td>" } } NewHTML+="</tr>" } NewHTML+="</table>" DataGroup2.innerHTML=NewHTML DataFrame1.style.pixelHeight=RsHeight*ShowLine DataFrame2.style.pixelHeight=RsHeight*ShowLine DataFrame3.style.pixelHeight=RsHeight*ShowLine+RsHeight DataGroup3.style.pixelHeight=RsHeight*(DataFields.length+1) } function ResetTable(n){ var iBoxWidth=0 for(i=0;i<DataTitles.length;i++){ if(i<(n+1)){ var cTitle=DataTitles[i].split("#") iBoxWidth+=parseInt(cTitle[1]) } } if(iBoxWidth>BoxWidth){ var Sure=confirm("\n锁定栏位的宽度大於资料表显示的宽  \n\n度,这可能会造成版面显示不正常。\n\n\n您确定要继续吗?") }else{ Sure=true } if(Sure){ LockCols=(LockCols==n+1)?0:n+1 WriteTable() } } function SYNC_Roll(){ DataGroup1.style.posTop=-DataFrame3.scrollTop DataGroup2.style.posTop=-DataFrame3.scrollTop } window.onload=WriteTable
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值