Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用asp.net将sql选定数据转换为excel表的最佳方法_Mysql_Asp.net_Excel_Gridview_Export - Fatal编程技术网

Mysql 使用asp.net将sql选定数据转换为excel表的最佳方法

Mysql 使用asp.net将sql选定数据转换为excel表的最佳方法,mysql,asp.net,excel,gridview,export,Mysql,Asp.net,Excel,Gridview,Export,我有一个sql语句,用于选择要以.xls格式导出到excel的数据表, 我将此表添加到网格视图中,然后呈现该网格视图以创建html编写器,并使用asp.net将其写入excel文件 但我一直有这样的警告,文件格式和扩展名不匹配。 问题是您正在创建的文件不是真正的Excel文件。它是带有.xls扩展名的HTML 请,我需要知道在没有警告的情况下将这些选定数据导出到xls文件的最佳方式。我也尝试过直接从dataTable导出,但在打开excel时仍会收到警告 // these namespac

我有一个sql语句,用于选择要以.xls格式导出到excel的数据表, 我将此表添加到网格视图中,然后呈现该网格视图以创建html编写器,并使用asp.net将其写入excel文件

但我一直有这样的警告,文件格式和扩展名不匹配。 问题是您正在创建的文件不是真正的Excel文件。它是带有.xls扩展名的HTML


请,我需要知道在没有警告的情况下将这些选定数据导出到xls文件的最佳方式。

我也尝试过直接从dataTable导出,但在打开excel时仍会收到警告

   // these namespaces need to be added to your code behind file
using System.Configuration;
using System.Data.SqlClient;
using System.Data;

namespace MySpot.UserPages
{
    public partial class Journal : System.Web.UI.Page
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["MySpotDBConnStr"].ConnectionString);
        DataTable dt = new DataTable();

        // regular page_load from .aspx file
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
            }
        }

        // added a button with ID=btnDownload and double clicked it's onclick event to auto create method
        protected void btnDownload_Click(object sender, EventArgs e)
        {
            string queryStr = "SELECT * from table";
            SqlDataAdapter sda = new SqlDataAdapter(queryStr, conn);
            sda.Fill(dt);
            ExportTableData(dt);
        }

        // this does all the work to export to excel
        public void ExportTableData(DataTable dtdata)
        {
            string attach = "attachment;filename=journal.xls";
            Response.ClearContent();
            Response.AddHeader("content-disposition", attach);
            Response.ContentType = "application/ms-excel";
            if (dtdata != null)
            {
                foreach (DataColumn dc in dtdata.Columns)
                {
                    Response.Write(dc.ColumnName + "\t");
                    //sep = ";";
                }
                Response.Write(System.Environment.NewLine);
                foreach (DataRow dr in dtdata.Rows)
                {
                    for (int i = 0; i < dtdata.Columns.Count; i++)
                    {
                        Response.Write(dr[i].ToString() + "\t");
                    }
                    Response.Write("\n");
                }
                Response.End();
            }
        }
    }
}
//这些名称空间需要添加到代码隐藏文件中
使用系统配置;
使用System.Data.SqlClient;
使用系统数据;
命名空间MySpot.UserPages
{
公共部分类日志:System.Web.UI.Page
{
SqlConnection conn=新的SqlConnection(ConfigurationManager.ConnectionString[“MySpotDBConnStr”].ConnectionString);
DataTable dt=新的DataTable();
//从.aspx文件加载常规页面
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
}
}
//添加了一个ID=btnDownload的按钮,并双击它的onclick事件来自动创建方法
受保护的void btnDownload\u单击(对象发送方,事件参数e)
{
字符串queryStr=“从表中选择*”;
SqlDataAdapter sda=新的SqlDataAdapter(queryStr,conn);
sda.填充(dt);
输出表数据(dt);
}
//这完成了导出到excel的所有工作
public void ExportTableData(数据表dtdata)
{
string attach=“附件;文件名=journal.xls”;
Response.ClearContent();
AddHeader(“内容处置”,附件);
Response.ContentType=“应用程序/ms excel”;
如果(dtdata!=null)
{
foreach(dtdata.Columns中的数据列dc)
{
Response.Write(dc.ColumnName+“\t”);
//sep=“;”;
}
Response.Write(系统、环境、换行符);
foreach(dtdata.Rows中的数据行dr)
{
对于(int i=0;i


当前设计不允许您在Excel中从网站打开HTML内容,除非URL的扩展名为.HTM/.HTML/.MHT/.MHTML/.MHTML。因此,返回HTML并将MIME类型设置为类似XLS的内容以尝试强制HTML在Excel中而不是在web浏览器中打开(如预期)的ASP页面将始终收到安全警报,因为内容与MIME类型不匹配。如果使用HTML MIME类型,则web浏览器将打开内容而不是Excel。因此,对于这种情况没有很好的解决方法,因为HTML/MHTML缺少一种特定于Excel的特殊MIME类型。如果您同时控制需要访问的web服务器和客户端桌面,则可以添加自己的MIME类型,但除此之外,最好的选择是使用不同的文件格式,或向用户发出警告,并告诉他们选择“是”对话框。

此警报是Excel 2007中一项新的安全功能,称为扩展强化,确保打开的文件内容与尝试打开该文件的shell命令中指定的扩展名类型匹配。。。此问题仍在调查中,但考虑到代码的复杂性,以及Excel不想降低安全措施以解决IE开放行为而不完全了解对其他浏览器用户的后果,在Office 14之前不可能修复此问题。