GridView1.DataBind();
GridView1.AllowPaging = false;
GridView1.AllowSorting = false;
Response.Clear();
Response.Buffer = true;
Response.ContentEncoding = Encoding.GetEncoding("gb2312");
Response.Charset = "";
Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(filename.Replace(" ", "") + ".csv", System.Text.Encoding.UTF8));
Response.ContentType = "text/txt";
StringBuilder sb = new StringBuilder();
Page page = new Page();
HtmlForm form = new HtmlForm();
GridView1.EnableViewState = false;
// Deshabilitar la validación de eventos, sólo asp.net 2
page.EnableEventValidation = false;
// Realiza las inicializaciones de la instancia de la clase Page que requieran los diseñadores RAD.
page.DesignerInitialize();
page.Controls.Add(form);
form.Controls.Add(GridView1);
sw = new StringWriter(sb);
sw.WriteLine(string.Format("{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}", GridView1.Columns[1].HeaderText, GridView1.Columns[2].HeaderText, GridView1.Columns[3].HeaderText, GridView1.Columns[4].HeaderText, GridView1.Columns[5].HeaderText, GridView1.Columns[6].HeaderText, GridView1.Columns[7].HeaderText, GridView1.Columns[8].HeaderText, GridView1.Columns[9].HeaderText, GridView1.Columns[10].HeaderText.Replace("<br />", ""), GridView1.Columns[11].HeaderText.Replace("<br />", ""), GridView1.Columns[12].HeaderText.Replace("<br />", "")));
string[] listStr = null;
if (!string.IsNullOrEmpty(str_check))
{
str_check = str_check.Remove(str_check.LastIndexOf(";"));
listStr = str_check.Split(';');
}
if (listStr.Length > 0)
{
int n = 1;
int count = 0;
foreach (string str in listStr)
{
count = int.Parse(str);
string typeName = mDataTable.Rows[count]["typeName"].ToString();
string callDateTime = mDataTable.Rows[count]["callDateTime"].ToString();
string callEndTime = mDataTable.Rows[count]["callEndTime"].ToString();
string aimNum = mDataTable.Rows[count]["aimNum"].ToString();
string getNum = mDataTable.Rows[count]["getNum"].ToString();
string getRate = mDataTable.Rows[count]["getRate"].ToString();
string succeedNum = mDataTable.Rows[count]["succeedNum"].ToString();
string succeedRate = mDataTable.Rows[count]["succeedRate"].ToString();
string daisNum = mDataTable.Rows[count]["daisNum"].ToString();
string allotNum = mDataTable.Rows[count]["allotNum"].ToString();
string remainNum = mDataTable.Rows[count]["remainNum"].ToString();
sw.WriteLine(string.Format("{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}, {11}", n, typeName, callDateTime, callEndTime, aimNum, getNum, getRate, succeedNum, succeedRate, daisNum, allotNum, remainNum));
n++;
}
}
}
sw.Flush();
Response.Write(sb);
Response.End();
1、导出附件另存时,直接打开附件时,标题为乱码2010-5-10%e7%bb%bc%e5%90%88%e6%是怎么回事啊?
2、导出的文件,当打开再保存时总是提示:csv可能含有与csv(逗号分隔)不兼容的的功能???
9 个解决方案
#1
csv文件格式:
1 回车换行分割记录
2 逗号分割字段
3 第一行可以是列名,也可以直接是数据
4 如果数据包括逗号,则需要使用双引号括起来,没有逗号也可以使用双引号括起来,不会错
5 如果数据使用双引号括起来,则如果数据本身包括双引号,这需要使用连续的两个双引号代替
结束,请按以上格式组织csv文件。
1 回车换行分割记录
2 逗号分割字段
3 第一行可以是列名,也可以直接是数据
4 如果数据包括逗号,则需要使用双引号括起来,没有逗号也可以使用双引号括起来,不会错
5 如果数据使用双引号括起来,则如果数据本身包括双引号,这需要使用连续的两个双引号代替
结束,请按以上格式组织csv文件。
#2
Text.Encoding.UTF8 改成default 就好了。
#3
utf-8改成default
#4
不行的,直接打开时,文件名还是乱码。
#5
Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(filename.Replace(" ", "") + ".csv", System.Text.Encoding.UTF8));
改成
Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(filename.Replace(" ", "") + ".csv", System.Text.Encoding。DEFAULT));
试试看
#6
不行的,楼上的已经说了
#7
up。。。
#8
up继续求救!
#9
直接写
System.Data.DataTable t = ds.Tables[0];
try
{
string fname2 = "d:\\a\\";
string fname1 = n + "_Profile";
string FileName = fname2 + fname1 + ".csv";
FileStream objFileStream;
StreamWriter objStreamWriter;
string strLine = "";
objFileStream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);
objStreamWriter = new StreamWriter(objFileStream, System.Text.Encoding.Unicode);
//插入标题
for (int i = 0; i < t.Columns.Count; i++)
{
strLine = strLine + t.Columns[i].ColumnName.ToString() + Convert.ToChar(9);
}
objStreamWriter.WriteLine(strLine);
strLine = "";
//开始插入数据
for (int i = 0; i < t.Rows.Count; i++)
{
//string sss = t.Rows[i][0].ToString();
//表格的自动编号strLine = strLine + (i+1) +Convert.ToChar(9);
for (int j = 0; j < t.Columns.Count; j++)
{
strLine = strLine + t.Rows[i][j].ToString() + Convert.ToChar(9);
}
objStreamWriter.WriteLine(strLine);
strLine = "";
#1
csv文件格式:
1 回车换行分割记录
2 逗号分割字段
3 第一行可以是列名,也可以直接是数据
4 如果数据包括逗号,则需要使用双引号括起来,没有逗号也可以使用双引号括起来,不会错
5 如果数据使用双引号括起来,则如果数据本身包括双引号,这需要使用连续的两个双引号代替
结束,请按以上格式组织csv文件。
1 回车换行分割记录
2 逗号分割字段
3 第一行可以是列名,也可以直接是数据
4 如果数据包括逗号,则需要使用双引号括起来,没有逗号也可以使用双引号括起来,不会错
5 如果数据使用双引号括起来,则如果数据本身包括双引号,这需要使用连续的两个双引号代替
结束,请按以上格式组织csv文件。
#2
Text.Encoding.UTF8 改成default 就好了。
#3
utf-8改成default
#4
不行的,直接打开时,文件名还是乱码。
#5
Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(filename.Replace(" ", "") + ".csv", System.Text.Encoding.UTF8));
改成
Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(filename.Replace(" ", "") + ".csv", System.Text.Encoding。DEFAULT));
试试看
#6
不行的,楼上的已经说了
#7
up。。。
#8
up继续求救!
#9
直接写
System.Data.DataTable t = ds.Tables[0];
try
{
string fname2 = "d:\\a\\";
string fname1 = n + "_Profile";
string FileName = fname2 + fname1 + ".csv";
FileStream objFileStream;
StreamWriter objStreamWriter;
string strLine = "";
objFileStream = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);
objStreamWriter = new StreamWriter(objFileStream, System.Text.Encoding.Unicode);
//插入标题
for (int i = 0; i < t.Columns.Count; i++)
{
strLine = strLine + t.Columns[i].ColumnName.ToString() + Convert.ToChar(9);
}
objStreamWriter.WriteLine(strLine);
strLine = "";
//开始插入数据
for (int i = 0; i < t.Rows.Count; i++)
{
//string sss = t.Rows[i][0].ToString();
//表格的自动编号strLine = strLine + (i+1) +Convert.ToChar(9);
for (int j = 0; j < t.Columns.Count; j++)
{
strLine = strLine + t.Rows[i][j].ToString() + Convert.ToChar(9);
}
objStreamWriter.WriteLine(strLine);
strLine = "";