我需要导出 2csv单击一个按钮即可打开文件。下面是我生成2的代码csv files:
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.IO;
using System;
using System.Configuration;
using System.IO.Packaging;
using System.Web;
namespace ExportToCsv
{
public partial class WebForm1 : System.Web.UI.Page
{
//Build the CSV file data as a Comma separated string.
string csvHeader = string.Empty;
//Build the CSV file data as a Comma separated string.
string csvDetails = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ExportCSV(object sender, EventArgs e)
{
string constr = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("select * from mytable-1")
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
//foreach (DataRow rows in dt.Rows)
//{
foreach (DataColumn column in dt.Columns)
{
//Add the Header row for CSV file.
csvHeader += column.ColumnName + ' ';
}
//Add new line.
csvHeader += "\r\n";
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn column in dt.Columns)
{
//Add the Data rows.
csvHeader += row[column.ColumnName].ToString().Replace(",", ";") + ' ';
}
//Add new line.
csvHeader += "\r\n";
}
//}
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=HeaderSection.txt");
Response.Charset = "";
Response.ContentType = "application/text";
Response.Output.Write(csvHeader);
}
}
}
using (SqlCommand cmd = new SqlCommand("select * from mytable-2")
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = con;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
//foreach (DataRow rows in dt.Rows)
//{
foreach (DataColumn column in dt.Columns)
{
//Add the Header row for CSV file.
csvDetails += column.ColumnName + ' ';
}
//Add new line.
csvDetails += "\r\n";
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn column in dt.Columns)
{
//Add the Data rows.
csvDetails += row[column.ColumnName].ToString().Replace(",", ";") + ' ';
}
//Add new line.
csvDetails += "\r\n";
}
//}
// Download the CSV file.
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=DetailSection.txt");
Response.Charset = "";
Response.ContentType = "application/text";
Response.Output.Write(csvDetails);
Response.Flush();
Response.End();
}
}
}
}
}
}
}
我从 2 个不同的表获取数据,并分别以 csv 格式导出数据。如果我删除第二个using
声明该功能运行完美,但当我添加第二个时using
在我的浏览器中写入第二个 csv 的语句(Chrome) 给出错误Err_Response_Headers_Multiple_Content_Disposition
请帮忙。
我通过这篇文章解决了
这个错误上周一直困扰着我。此错误是 Google Chrome 特有的。不过,这并不是 Chrome 本身的错误,因为其他浏览器会忽略重复的标头,这似乎是 Chrome 的问题。如果您或您的网络应用程序发送标头,则可以通过以下方式轻松解决此问题。
1 - 使用“”将文件名括起来。 IE
header('内容处理:附件; filename="'.$file_name.'"');
代替
header('内容处理:附件;文件名='.$file_name);
2 - 如果可能,将空格和逗号 (,) 替换为下划线 (_)
$file_name = str_replace(array('"', "'", ' ', ','), '_', $file_name);
3 - 通过将可选的替换参数设置为 true 来明确告诉 PHP 覆盖标头。
header('内容类型:应用程序/pdf', true);
修复重复标头错误 349 http://www.gangarasa.com/lets-Do-GoodCode/tag/err_response_headers_multiple_content_disposition/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)