做项目时,通过流导出数据到Excel却不显示网格线,真是郁闷。上网查了好久才得一良方(注意<XML>标签中的代码):
DataTablethisTable=DBHelper.GetDataTable("select*fromtable");
stringsheetName="sheetName";
stringfileName="fileName";
if(thisTable!=null)
{
StringWritersw=newStringWriter();
sw.WriteLine("<htmlxmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
sw.WriteLine("<head>");
sw.WriteLine("<!--[ifgtemso9]>");
sw.WriteLine("<xml>");
sw.WriteLine("<x:ExcelWorkbook>");
sw.WriteLine("<x:ExcelWorksheets>");
sw.WriteLine("<x:ExcelWorksheet>");
sw.WriteLine("<x:Name>"+sheetName+"</x:Name>");
sw.WriteLine("<x:WorksheetOptions>");
sw.WriteLine("<x:Print>");
sw.WriteLine("<x:ValidPrinterInfo/>");
sw.WriteLine("</x:Print>");
sw.WriteLine("</x:WorksheetOptions>");
sw.WriteLine("</x:ExcelWorksheet>");
sw.WriteLine("</x:ExcelWorksheets>");
sw.WriteLine("</x:ExcelWorkbook>");
sw.WriteLine("</xml>");
sw.WriteLine("<![endif]-->");
sw.WriteLine("</head>");
sw.WriteLine("<body>");
sw.WriteLine("<table>");
sw.WriteLine("<tr>");
sw.WriteLine("<td><strong>列名0</strong></td>");
sw.WriteLine("<td>列名1</td>");
sw.WriteLine("<td>列名2</td>");
sw.WriteLine("<td>列名3</td>");
sw.WriteLine("<td>列名4</td>");
sw.WriteLine("<td>列名5</td>");
sw.WriteLine("</tr>");
foreach(DataRowdrinthisTable.Rows)
{
sw.WriteLine("<tr>");
sw.WriteLine("<td>"+dr["C0"]+"</td>");
sw.WriteLine("<td>"+dr["C1"]+"</td>");
sw.WriteLine("<td>"+dr["C2"]+"</td>");
sw.WriteLine("<td>"+dr["C3"]+"</td>");
sw.WriteLine("<td>"+dr["C4"]+"</td>");
sw.WriteLine("<td>"+dr["C5"]+"</td>");
sw.WriteLine("</tr>");
}
sw.WriteLine("</table>");
sw.WriteLine("</body>");
sw.WriteLine("</html>");
sw.Close();
Response.Clear();
Response.Buffer=true;
Response.Charset="UTF-8";
this.EnableViewState=false;
Response.AddHeader("Content-Disposition","attachment;filename="+fileName+".xls");
Response.ContentType="application/ms-excel";
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
Response.Write(sw);
Response.End();
}