0

データ テーブルを Excel にエクスポートしていますが、データ テーブルの 1 つの列に電話番号が含まれていますが、Excel にエクスポートした後、電話番号の列が指数として表示されます。

番号として必要です。これを修正するにはどうすればよいですか?

 string fileName = "File" + DateTime.Now.ToString("MMddyyyy_HHmmss") + ".xls";
        Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
        //Response.AddHeader("content-disposition", "attachment;filename=File.xls");
        Response.ContentType = "application/vnd.ms-excel";

        StringWriter stringWriter = new StringWriter();
        HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWriter);
        DataGrid dataExportExcel = new DataGrid();
        dataExportExcel.ItemDataBound += new DataGridItemEventHandler(dataExportExcel_ItemDataBound);
        dataExportExcel.DataSource = dt;
        dataExportExcel.DataBind();
        dataExportExcel.RenderControl(htmlWrite);
        System.Text.StringBuilder sbResponseString = new System.Text.StringBuilder();
        sbResponseString.Append("<html xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:x=\"urn:schemas-microsoft-com:office:xlExcel8\" xmlns=\"http://www.w3.org/TR/REC-html40\"> <head></head> <body>");
        sbResponseString.Append(stringWriter + "</body></html>");
        Response.Write(sbResponseString.ToString());
        Response.End();
4

4 に答える 4

4

以下のSTYLEを HTML タグに追加してください。

<style> table { mso-number-format:'0'; } </style>

このような :

sbResponseString.Append("<html xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:x=\"urn:schemas-microsoft-com:office:xlExcel8\" xmlns=\"http://www.w3.org/TR/REC-html40\"> <head><style> td { mso-number-format:'0'; } </style></head> <body>");

完全なコード:

   protected void btnExcel_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        dt.Clear();
        dt.Columns.Add("Phone");
        dt.Columns.Add("Name");
        DataRow Sample = dt.NewRow();
        Sample["Phone"] = 125316245612456124;
        Sample["Name"] = "Pandian";
        dt.Rows.Add(Sample);
        GetExcel(dt);            
    }
    public void GetExcel(DataTable dt)
    {
        string fileName = "File" + DateTime.Now.ToString("MMddyyyy_HHmmss") + ".xls";
        Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
        Response.ContentType = "application/vnd.ms-excel";
        StringWriter stringWriter = new StringWriter();
        HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWriter);
        DataGrid dataExportExcel = new DataGrid();
        dataExportExcel.DataSource = dt;
        dataExportExcel.DataBind();
        dataExportExcel.RenderControl(htmlWrite);
        System.Text.StringBuilder sbResponseString = new System.Text.StringBuilder();
        sbResponseString.Append("<html xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:x=\"urn:schemas-microsoft-com:office:xlExcel8\" xmlns=\"http://www.w3.org/TR/REC-html40\"> <head><style> table { mso-number-format:'0'; } </style></head> <body>");
        sbResponseString.Append(stringWriter + "</body></html>");
        Response.Write(sbResponseString.ToString());
        Response.End();
    }

エクセル出力:

Excel出力

于 2013-03-19T12:24:23.650 に答える
2

使用できますNumberValue and NumberFormat properties

ここにサンプルがあります。範囲を設定してください

yourSheet.Range[".."].NumberValue = 1234.5678;
yourSheet.Range[".."].NumberFormat = "0.00";
于 2013-03-19T11:00:32.040 に答える
1

スプレッドシートのセルに書き込む前に、電話番号の先頭に一重引用符を追加できます。

「1234567890」ではなく「'1234567890」のように

ありがとう

于 2013-03-19T11:25:35.203 に答える