0

我想在不使用任何第三方 dll 的情况下将网格数据从 ASP.Net 网页导出到 Excel。

谁能告诉我该怎么做?

4

2 回答 2

0

嗨,请使用以下代码导出到 excel:

 FileInfo FI = new FileInfo(Path);
StringWriter stringWriter = new StringWriter();
HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWriter);
DataGrid DataGrd = new DataGrid();
DataGrd.DataSource = dt1; //This is the same dataTable by which you are binding your grid
DataGrd.DataBind();

DataGrd.RenderControl(htmlWrite);
string directory = Path.Substring(0, Path.LastIndexOf("\\"));// GetDirectory(Path);
if (!Directory.Exists(directory))
{
    Directory.CreateDirectory(directory);
}

System.IO.StreamWriter vw = new System.IO.StreamWriter(Path, true);
stringWriter.ToString().Normalize();
vw.Write(stringWriter.ToString());
vw.Flush();
vw.Close();
WriteAttachment(FI.Name, "application/vnd.ms-excel", stringWriter.ToString());

上面的代码使用了一个 WriteAttachment 函数,它将附件推送给 Response 对象中的用户。以下代码显示了 WriteAttachment 的实现:

public static void WriteAttachment(string FileName, string FileType, string content)
{
    HttpResponse Response = System.Web.HttpContext.Current.Response;
    Response.ClearHeaders();
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName);
    Response.ContentType = FileType;
    Response.Write(content);
    Response.End();
}

更多详情请点击这里

于 2012-12-03T10:19:57.253 回答
0

我建议您如果您在 GridView 的模板字段中使用任何控件,例如 Bullted List、RadioButtonList、CheckBoxList,并且您想在 Excel 中导出,那么只需使用以下代码...

公共无效ExportToExcel(GridView gv,字符串文件名)
    {
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", filename + ".xls"));
        HttpContext.Current.Response.ContentType = "应用程序/ms-excel";

        使用 (StringWriter sw = new StringWriter())
        {
            使用 (HtmlTextWriter htw = new HtmlTextWriter(sw))
            {
                // 创建一个包含网格的表
                表表 = 新表();

                // 包括网格线设置
                table.GridLines = gv.GridLines;

                // 将标题行添加到表中
                如果(gv.HeaderRow != null)
                {
                    // PrepareControlForExport(gv.HeaderRow);

                    table.Rows.Add(gv.HeaderRow);
                }
                //使页眉彩色

                对于 (int j = 0; j

否则,我想建议您绑定 Grid 的 DataTable 使用它在 Excel 中导出数据。并使用以下代码来做到这一点。

公共无效ExportToExcel(数据表dt,字符串文件名)
    {
        尝试
        {
            //******************************Excel生成开始************************ ********

            字符串附件=“附件;文件名=”+文件名+“.xls”;
            Response.ClearContent();
            Response.AddHeader("内容配置", 附件);
            Response.ContentType = "应用程序/ms-excel";
            字符串选项卡 = "";

            foreach(dt.Columns 中的 DataColumn dc)
            {
                Response.Write(tab + dc.ColumnName);
                选项卡 = "\t";
            }
            Response.Write("\n");

            智力;
            foreach(dt.Rows 中的 DataRow dr)
            {
                选项卡 = "";
                对于 (ik = 0; ik
于 2012-12-03T10:31:48.270 回答