ASP.NET 把数据库中的数据查询出来后导出到Excel。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET 把数据库中的数据查询出来后导出到Excel。相关的知识,希望对你有一定的参考价值。

数据里面包括html代码,要求在Excel中能够按照HTML代码的格式把数据显示出来。

不如说数据库中一个<p />在Excel中就要换行

这个问题有两种可能:
第一种,你一次查出所有记录然后通过缓存来实现分页的,那样的话呢,你在导出的时候直接操作保存在缓存中的数据源,而不是gridview的数据源(因为它只是其中一部分)。
第二种,你每次操作分页去数据库中查询一次,那样的话你想导出全部的,你要另外增加一个方法,查询全部的记录数,然后作为导出时的数据源。
希望以上回答对你有帮助!
另外,站长团上有产品团购,便宜有保证
参考技术A 我知道 是bs程序吗? 网页的?我有代码。 最快的就是,在SQL查询分析表里面写一条查询语句将你所须要的数据查询出来,然后复制,粘贴到EXCEL表中追问

是网页的。数据库中的内容我可以导入到EXCEL中,关键是数据库中的HTML代码也显示在Excel中,我要让它按照HTML代码来显示文本 而不是显示HTML代码
对了数据库是Microsoft Access

使用 ASP.NET 将 HTML 表导出到 Excel

【中文标题】使用 ASP.NET 将 HTML 表导出到 Excel【英文标题】:Export HTML Table to Excel using ASP.NET 【发布时间】:2012-03-10 23:15:54 【问题描述】:

我有一个 html 表(不是 Gridview),它没有正确的标题和行。相反,它具有定制的结构和数据。我想将此表导出到 Excel。如何使用 ASP.NET?

标签是固定文本,整数值来自数据库。所以表结构是固定的,只有整数/十进制值发生变化。

【问题讨论】:

这必须是一个可重复的过程吗?还是从您的网页中剪切和粘贴一次? 表格的数据从何而来? 与其他人不同,我将解释我的反对意见:这是一个糟糕的问题,没有足够的细节来引出任何有价值的实际答案。提供更多细节,否则我怀疑这个问题将被关闭 【参考方案1】:

您希望使用 ASP.NET 将 HTML 表格(不是 Gridview)自定义结构和数据导出到 Excel。

尝试以下方法

    提供ID 并添加runat="server" 属性

    &lt;table id="tbl" runat="server" &gt;

    添加以下代码

    Response.ContentType = "application/x-msexcel"; 
    Response.AddHeader("Content-Disposition", "attachment;
    filename=ExcelFile.xls");
    Response.ContentEncoding = Encoding.UTF8; 
    StringWriter tw = new StringWriter();
    HtmlTextWriter hw = new HtmlTextWriter(tw);
    tbl.RenderControl(hw);
    Response.Write(tw.ToString());
    Response.End();
    

【讨论】:

非常好。如果我想在excel文件上放一张图片,或者给单元格填充颜色等等。我想说的是,导出后格式化excel文件。 查看***.com/questions/7172282/…和***.com/questions/9410401/… 我正在尝试从我的 SP 站点中的可视 Web 部件中使用导出功能。 Response 给我一个错误。【参考方案2】:

您可以使用以下代码:

Response.ContentType = "application/force-download";
Response.AddHeader("content-disposition", "attachment; filename=Print.xls");
Response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
Response.Write("<head>");
Response.Write("<META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-     8\">");
Response.Write("<!--[if gte mso 9]><xml>");
Response.Write("<x:ExcelWorkbook>");
Response.Write("<x:ExcelWorksheets>");
Response.Write("<x:ExcelWorksheet>");
Response.Write("<x:Name>Report Data</x:Name>");
Response.Write("<x:WorksheetOptions>");
Response.Write("<x:Print>");
Response.Write("<x:ValidPrinterInfo/>");
Response.Write("</x:Print>");
Response.Write("</x:WorksheetOptions>");
Response.Write("</x:ExcelWorksheet>");
Response.Write("</x:ExcelWorksheets>");
Response.Write("</x:ExcelWorkbook>");
Response.Write("</xml>");
Response.Write("<![endif]--> ");
StringWriter tw = new StringWriter(); 
HtmlTextWriter hw = new HtmlTextWriter(tw);      
tbl.RenderControl(hw);
Response.Write(tw.ToString());
Response.Write("</head>");
Response.flush();

如果您希望导出的输出看起来与您的 UI 完全相同,建议提供内联 css。如果您将 css 类应用于表格,则它不会显示在导出的 excel 中。

【讨论】:

不一定你需要内联CSS你可以在头部添加样式类,它会正常工作【参考方案3】:

如果 dtReport 包含表格(即要导出的数据),那么我们可以使用以下 LOC 将表格导出到 excel 中,也可以格式化表头

    if (dtReports != null && dtReports.Rows.Count > 0 && !string.IsNullOrEmpty(formName))
            
                string filename = formName.ToUpper() + ParsConstant.XLS_EXTENSION;
                StringWriter tw = new StringWriter();

                using (HtmlTextWriter hw = new HtmlTextWriter(tw))
                

                    //Binding Datatable to DataGrid.
                    DataGrid dgGrid = new DataGrid();
                    dgGrid.DataSource = dtReports;
                    dgGrid.DataBind();

                    //Some Properties for the Header
                    dgGrid.HeaderStyle.Font.Bold = true;
                    dgGrid.HeaderStyle.Font.Size = 13;

                    //Get the HTML for the control.
                    dgGrid.RenderControl(hw);


                    Response.ContentType = "application/vnd.ms-excel";
                    Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "");
                    //Response.Write("<style> TD  mso-number-format:\\@;  </style>");


                    Response.Write(tw.ToString());
                    Response.End();
                
            

使用 MSO 格式不会避免前导零,但会将文本转换为不建议进行操作的字符串。

【讨论】:

【参考方案4】:

如果您的数据是数据库化的(如果没有,您可以存储在 XML 文件中),然后查看我最近发布的一个类似问题。

Writing DataReader Rows to Excel File

【讨论】:

【参考方案5】:

没有自动化的方法。但是您可以使用相同的代码来创建表并将其写入输出。如果您将其编写为简单的 CSV 文件,则用户只需单击下载的文件即可将其加载到 Excel 中。

通过设置正确的标题,您可以指示浏览器将内容视为下载内容而不是网页。我在this article 中发布了执行此操作的代码。

【讨论】:

谁是不加解释地投票否决答案的笨蛋? 我不是投反对票的“bozo”:),但也许你的答案被否决了,因为 OP 明确声明这不在 GridView 中 - OP 也没有暗示这个数据来自。据我们所知,这是 OP 无法控制的网站上的 HTML 表格。 @ErOx:是的,点了。 :) 由于 OP 说他正在使用 ASP.NET,我将假设他是从他自己的网站上执行此操作的。但我同意在这个问题上存在歧义。

以上是关于ASP.NET 把数据库中的数据查询出来后导出到Excel。的主要内容,如果未能解决你的问题,请参考以下文章

asp.net怎么样把excel文件导入到数据库和导出来(紧急求助+高分)

asp.net中如何把sql中的数据查找出来,并且倒入到Excel文件中

用asp.net 把GridView中的所有数据导出到Excel中没问题,根据条件查询的信息导出到Excel中 怎么整???

asp.net web页面导出word

ASP.NET把数据查询出来保存在了一个datatable里面了,之后我想把这个datatable的数据导入到access数据库

asp.net怎么把div中的内容导出到word文档中;而且导出的内容不能含有源代码