DevExpress asp.NetはExcelを書き出して自動的に雷の問題を開けて、デフォルトはaspxページに保存します

8893 ワード

現在、曲線救国策を取っています.
MVCを利用して.....
<dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" KeyFieldName="FriendLinkID" Theme="Default" EnableTheming="True">

                <Columns>

                    <dx:GridViewDataTextColumn FieldName="FriendLinkID" ReadOnly="True" VisibleIndex="0">

                        <EditFormSettings Visible="False" />

                    </dx:GridViewDataTextColumn>

                    <dx:GridViewDataTextColumn FieldName="LinkName" VisibleIndex="1">

                    </dx:GridViewDataTextColumn>

                    <dx:GridViewDataTextColumn FieldName="LinkSrc" VisibleIndex="2">

                    </dx:GridViewDataTextColumn>

                    <dx:GridViewDataTextColumn FieldName="Contact" VisibleIndex="3">

                    </dx:GridViewDataTextColumn>

                    <dx:GridViewDataDateColumn FieldName="PublishData" VisibleIndex="4">

                    </dx:GridViewDataDateColumn>

                </Columns>

            </dx:ASPxGridView>

            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Pengbg_DataConnectionString %>" 

                SelectCommand="SELECT * FROM [Friendlink]"></asp:SqlDataSource>

            <dx:ASPxGridViewExporter ID="ASPxGridViewExporter1" GridViewID="ASPxGridView1" runat="server"></dx:ASPxGridViewExporter>

            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

 
 protected void Button1_Click(object sender, EventArgs e)

        {

            var fileName = new Random().Next().ToString();

            var fullPath = @"C:\" + fileName + ".xls";

            using (var fs = new FileStream(fullPath, FileMode.CreateNew, FileAccess.Write))

            {

                ASPxGridViewExporter1.WriteXls(fs);

            }

            Response.Redirect("Default1?path=" + fullPath);

        }
 public class Default1Controller : Controller

    {

        //

        // GET: /Default1/



        public ActionResult Index(string path)

        {

            String newfileName = DateTime.Now.ToString("yyyyMMddHHmmssff");

            return File(System.IO.File.ReadAllBytes(path), "application/vnd.ms-excel", HttpUtility.UrlEncode(string.Format("{0}.xls", newfileName)));

        }



    }

原理は推測・デバッグ中..