から Excel にエクスポートしようとしていますGridView
。
以下は私のコードです:
public override void ExecuteResult(ControllerContext context)
{
HttpContext curContext = HttpContext.Current;
curContext.Response.Clear();
curContext.Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
curContext.Response.Charset = "";
curContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
curContext.Response.ContentType = "application/vnd.ms-excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
htw.WriteLine("<font size=6>COMPANY<font>");
htw.WriteLine("</br>");
ExcelGridView.HeaderStyle.BackColor = Color.Orange;
ExcelGridView.RenderControl(htw);
ExcelGridView.Rows[2].
htw.WriteLine("<table border=1 bgcolor=#DBA901>");
htw.WriteLine("<tr >");
htw.WriteLine("<td>");
htw.WriteLine("Total");
htw.WriteLine("</td>");
htw.WriteLine("<td colspan=1>");
htw.WriteLine(totalQ);
htw.WriteLine("</td>");
htw.WriteLine("<td>");
htw.WriteLine("</td>");
htw.WriteLine("<td style=mso-number-format:.00>");
htw.WriteLine(totalP);
htw.WriteLine("</td>");
htw.WriteLine("</tr>");
htw.WriteLine("<table>");
byte[] byteArray = Encoding.ASCII.GetBytes(sw.ToString());
MemoryStream s = new MemoryStream(byteArray);
StreamReader sr = new StreamReader(s, Encoding.ASCII);
curContext.Response.Write(sr.ReadToEnd());
curContext.Response.End();
}
私の問題は、Excel で生成されたテーブルで、数値が 10 進数形式で表示されないことです。
たとえば、123.45 はそのまま表示されますが、123.00 は 123 として表示されます。これらの値に .00 を適用したいと考えています。また、3 列目と 4 列目のみに適用したいと考えています。
GridView の値は希望どおりですが、Excel へのエクスポート中に上記の問題のみが発生しています。
誰かが私に可能な解決策を提案できますか? ありがとうございました。
注:上記のコードではExcelGridView.RenderControl(htw); は GridView のコードで、ExcelGridViewは GridView の名前です。