2

データをExcelにエクスポートすると、列が読み込まれますが、列が展開されません。行をダブルクリックして列を展開しなくてもデータが表示されます。セルにデータ全体を表示できるように列を自動的に自動調整するコードを記述できますか?私はasp.netとc#を使用しています。

最初の写真は現在の様子で、2番目の写真は私がどのように見せたいかを示しています。

それはどのようなものか

私がそれをどのように見せたいか

protected void Button1_Click(object sender, EventArgs e)
{
    Response.Clear();
    Response.Buffer = true;

    DataSet dataSet = new DataSet();

    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ISALog1ConnectionString"].ToString());
    SqlCommand cmd = new SqlCommand("exec ProxyReport", conn);
    cmd.CommandTimeout = 200;
    SqlDataAdapter ad = new SqlDataAdapter(cmd);
    ad.Fill(dataSet);

    GridView1.DataSource = dataSet.Tables[0];
    GridView1.DataBind();
    GridView2.DataSource = dataSet.Tables[1];
    GridView2.DataBind();
    GridView3.DataSource = dataSet.Tables[2];
    GridView3.DataBind();

    dataSet.Tables[0].TableName = "1";
    dataSet.Tables[1].TableName = "2";
    dataSet.Tables[2].TableName = "3";

    int count = 3;

    ExcelPackage pack = new ExcelPackage();


    for (int i = 1; i <= count; i++)
    {
        DataTable table = dataSet.Tables[i.ToString()];
        ExcelWorksheet ws = pack.Workbook.Worksheets.Add("Top" + i);
        ws.Cells["A1"].LoadFromDataTable(table, true);
    }  

            Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
            Response.AddHeader("content-disposition", "attachment;  filename=ExcelExport.xlsx");
            Response.BinaryWrite(pack.GetAsByteArray());
            Response.Flush();
            Response.End();
  }
4

3 に答える 3

1
Excel.Range range;

range = ws.get_Range("A1", "1");
range.AutoFit();

MSDN

于 2012-07-13T16:13:36.933 に答える
0

バグがあるかもしれませんが、BestFitプロパティが必要なように見えます。

http://excelpackage.codeplex.com/discussions/248406/

于 2012-07-13T16:11:52.863 に答える
0

私は同じ問題の解決策を探していました。上記のチェックされた答えは私にとって直接機能しませんでした。

それは簡単な追加で機能しました:

Excel.Range range;

range = ws.get_Range("A1", "1");
range.Columns. AutoFit();
于 2015-06-29T13:18:15.270 に答える