今天在学做DataSet导出到EXCEL时候,参考了网上流行的几个方法,都是超过1万条就无法显示页面的
我就想,要是直接生成TXT文件,再改过后缀名就可以了!
TXT的内容:
<table>
<tr>
<td>数据</td>
<td style=/"vnd.ms-excel.numberformat:@/">123456789123456789</td>
</tr>
</table>
这样再改成xls格式就好了!那身份证这样的字段怎么办 用这样就好了
<td style=/"vnd.ms-excel.numberformat:@/">123456789123456789</td>
于是动手:
string sql ="select * from ODS where rownum < 60001"; //我的数据库是oracle,所以是rownum,SQL的话改成 top 60000就OK了
ddss = C.GetDataSet(sql, "table1");
StringBuilder sb = new StringBuilder();
string head = "<table cellspacing=/"0/" cellpadding=/"5/" rules=/"all/" border=/"1/"><tr>"
+ "<td>数据1</td>"
+ "<td>数据2</td>"
+ "<td>数据3</td>"
+ "<td>数据4</td>"
+ "<td>数据5</td>"
+ "<td>数据6</td>"
+ "</tr>";
sb.Append(head); //写头一行的标题
for (int i = 0; i < ddss.Tables["table1"].Rows.Count; i++) //开始写数据
{
string str = "<tr>"
+ "<td style=/"vnd.ms-excel.numberformat:@/">" + ddss.Tables["table1"].Rows[i].ItemArray[0] + "</td>"
+ "<td style=/"vnd.ms-excel.numberformat:@/">" + ddss.Tables["table1"].Rows[i].ItemArray[1] + "</td>"
+ "<td style=/"vnd.ms-excel.numberformat:@/">" + ddss.Tables["table1"].Rows[i].ItemArray[2] + "</td>"
+ "<td style=/"vnd.ms-excel.numberformat:@/">" + ddss.Tables["table1"].Rows[i].ItemArray[3] + "</td>"
+ "<td style=/"vnd.ms-excel.numberformat:@/">" + ddss.Tables["table1"].Rows[i].ItemArray[4] + "</td>"
+ "<td style=/"vnd.ms-excel.numberformat:@/">" + ddss.Tables["table1"].Rows[i].ItemArray[5] + "</td>"
+ "</tr>";
sb.Append(str);
}
string END = "</table>"; //写结尾
sb.Append(END);
Response.Charset = "GB2312";
Response.AddHeader("content-type", "application/x-msdownload");
Response.AppendHeader("Content-Disposition", "attachment;filename=1.xls"); //弹出保存为XLS文件
Page.Response.Write(sb.ToString());
Response.End();
看看结果!是不是几秒就好了呢,结果还很好看呢
如果觉得这不是个标准的EXCEL文件,OK,打开后另存为 Excel文件,这样另存为的就是标准的Excel文件了!
明天再试下分sheet看看行不行!