0

GridView を使用して DataSet から Excel にデータをエクスポートしています。フレームワークは 2.0 です。次のコード スニペットを使用しています。

    Generate_Sequence_Data_BAL objAttBAL = new Generate_Sequence_Data_BAL();
    string PlanId = "";
    PlanId = Cryptography.Decrypt(Request.QueryString[0].ToString());
    //Get the data from database into datatable
    Response.ClearHeaders();
    Response.Clear();
    Response.Buffer = true;
    Response.AddHeader("content-disposition", "attachment;filename=SequenceData_" + Cryptography.Decrypt(Request.QueryString[0].ToString()) + ".xls");
    Response.Charset = "";
    Response.ContentType = "application/vnd.ms-excel";
    StringWriter sw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(sw);

    DataSet ds = objAttBAL.GetData(Convert.ToInt32(PlanId));
    GridView GridView1 = new GridView();
    GridView1.RowDataBound += GridView1_RowDataBound;
    GridView1.DataSource = ds.Tables[0];
    GridView1.DataBind();

    for (int i = 0; i < GridView1.Rows.Count; i++)
    {
        //Apply text style to each Row
        GridView1.Rows[i].Attributes.Add("class", "textmode");
    }
    GridView1.RenderControl(hw);
    //style to format numbers to string
    string style = @"<style>.textmode{mso-number-format:'\@'}</style>";
    Response.Write(style);
    Response.Write(sw.ToString());
    Response.Flush();
    GridView1.Dispose();
    Response.End();

「5E02」のようなデータを含む列があります。上記の方法を使用した後でも、「5.00E+02」としてエクスポートされています。

SQL からの取得中に (') を連結しようとしましたが、(5E02) ではなく ('5E02) のように表示されます。

助けてください。また、gridview を使用せずにデータを Excel に直接エクスポートするための他の方法も提案してください。

PS:私はすでにこの質問を参照していますが 、機能していないため、重複していません。

4

1 に答える 1

0

列の最後にAlt+0160 ( Non-breaking Space ) を連結することで問題を解決しました。

Select <Column Name>+'<Alt+0160>'

現在、列は「5.00E+02」ではなく「5E02」としてエクスポートされています。

于 2013-01-03T10:29:43.277 に答える