優れたグリッドビューをエクスポートする必要があります。グリッドビューからの戻りHTMLコードをHtmlTextWriterに配置し、これを応答に配置します。
結果ファイルはExcelで正常に機能し、ExcelはHTMLを解析でき、結果は読み取り可能で、Excel 2003および2007で完全に機能しますが、Excel 2008(MACOS)を搭載した一部のマシンでは、Excelは生のHTMLコードのみを表示し、これを処理できませんhtmlコード。
Excelを構成するためのアイデアはありますか?
変換するコードは次のとおりです。
public static void ToExcel(GridView gridView, string fileName)
{
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.Buffer = true;
fileName = fileName.Replace(".xls", string.Empty) + ".xls";
response.AddHeader("content-disposition",
"attachment;filename=" + fileName);
response.Charset = "";
response.ContentEncoding = Encoding.Unicode;
response.BinaryWrite(Encoding.Unicode.GetPreamble());
response.ContentType = MimeTypes.GetContentType(fileName);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
gridView.AllowPaging = false;
//gridView.DataBind();
//Change the Header Row back to white color
gridView.HeaderRow.Style.Add("background-color", "#FFFFFF");
//Apply style to Individual Cells
for (int i = 0; i < gridView.HeaderRow.Cells.Count; i++)
{
gridView.HeaderRow.Cells[i].Style.Add("background-color", "yellow");
}
for (int i = 0; i < gridView.Rows.Count; i++)
{
GridViewRow row = gridView.Rows[i];
//Change Color back to white
row.BackColor = System.Drawing.Color.White;
//Apply text style to each Row
row.Attributes.Add("class", "textmode");
//Apply style to Individual Cells of Alternating Row
if (i % 2 != 0)
{
for (int j = 0; j < row.Cells.Count; j++)
{
row.Cells[j].Style.Add("background-color", "#C2D69B");
}
}
}
gridView.RenderControl(hw);
//style to format numbers to string
string style = @"<style> .textmode { mso-number-format:\@; } </style>";
response.Write(style);
response.Output.Write(sw.ToString());
response.Flush();
response.End();
}