using System;
using System.Web;
using System.IO;
using System.Text;
using System.Data;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.Odbc;
using System.Data.OleDb;
using System.IO.Packaging;
using System.Collections.Generic;
/// <summary>
/// DateSet生成csv文件的标准函数
/// </summary>
/// <param name="page">当前页</param>
/// <param name="ds">DataSet集合</param>
/// <param name="sFileName">名称</param>
/// <returns></returns>
public static string ExportDsToCsvFile(System.Web.UI.Page page, DataSet ds,string sFileName)
{
StreamWriter sw;
string sUrl;
string LineStr = "";
string sFile;
/
sUrl = "../zs/uploadfiles/temp/";
string a = page.Server.MapPath(sUrl);
if (!Directory.Exists(page.Server.MapPath(sUrl)))
Directory.CreateDirectory(page.Server.MapPath(sUrl));
//创建新文件
sUrl += sFileName + ".csv";
sFile = page.Server.MapPath(sUrl);
sw = new StreamWriter(sFile, false, System.Text.Encoding.Default);//创建新文件图标
//string data = "";
//foreach (DataTable tb in ds.Tables)
//{
// data += tb.TableName + "n";
// //写出列名
// foreach (DataColumn column in tb.Columns)
// {
// data += column.ColumnName + ",";
// }
// data += "n";
// //写出数据
// foreach (DataRow row in tb.Rows)
// {
// foreach (DataColumn column in tb.Columns)
// {
// data += row[column].ToString() + ",";
// }
// data += "n";
// }
// data += "n";
//}
int i, j;
//写入标题
for (j = 0; j < ds.Tables[0].Columns.Count; j++)
{
LineStr += ds.Tables[0].Columns[j].ToString() + ",";
}
LineStr = LineStr.Substring(0, LineStr.Length - 1);
sw.WriteLine(LineStr);
//写入内容
for (i = 0; i < ds.Tables[0].Rows.Count; i++)
{
LineStr = "";
for (j = 0; j < ds.Tables[0].Columns.Count; j++)
{
LineStr += ts.StringToAlert(ds.Tables[0].Rows[i][j].ToString().Replace(",", " ")) + ",";
}
LineStr = LineStr.Substring(0, LineStr.Length - 1);
//WriteLine ,分隔符号
sw.WriteLine(LineStr);
}
sw.Close();
long ImageSize;
byte[] ImageBuffer;
ImageSize = (new System.IO.FileInfo(sFile)).Length;
//创建一文件流对象
FileStream fs = new FileStream(sFile, FileMode.OpenOrCreate);
//基于文件流创建二进制读
BinaryReader r = new BinaryReader(fs);
//指到文件的开头位置
r.BaseStream.Seek(0, SeekOrigin.Begin);
ImageBuffer = r.ReadBytes(Int32.Parse(ImageSize.ToString()));
string[] sf1 = System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(sFileName)).Split(new Char[] { '\\' });
sFileName = sf1[sf1.Length - 1] + ".csv";
page.Response.Clear();
page.Response.ContentType = "application/ms-excel";
page.Response.AddHeader("Content-Disposition", "attachment;filename=" + sFileName);
page.Response.BinaryWrite(ImageBuffer);
fs.Close();
page.Response.End();
return sUrl;
}
/// <summary>
/// DataGrid生成csv文件的标准函数
/// </summary>
/// <param name="page">当前页</param>
/// <param name="dgdData">DataGrid的ID名</param>
/// <param name="iFromCol">开始列</param>
/// <param name="iToCol">结束列</param>
/// <param name="sFileName">名称</param>
/// <returns></returns>
public static string ExportDvToCsvFile(System.Web.UI.Page page,DataGrid dgdData,int iFromCol,int iToCol,string sFileName)
{
StreamWriter sw;
string sUrl;
string LineStr="";
string sFile;
//设置datagrid不分页以能导出全部数据
bool bAllowPage= dgdData.AllowPaging;
if (dgdData.AllowPaging)
{
dgdData.AllowPaging=false;
dgdData.DataBind();
}
sUrl = "../zs/uploadfiles/temp/";
string a=page.Server.MapPath(sUrl);
if (!Directory.Exists(page.Server.MapPath(sUrl)))
Directory.CreateDirectory(page.Server.MapPath(sUrl));
//创建新文件
sUrl += sFileName+".csv";
sFile = page.Server.MapPath(sUrl);
sw = new StreamWriter(sFile,false,System.Text.Encoding.Default);//创建新文件图标
int i,j;
//写入标题
for (j=iFromCol;j<=iToCol;j++)
{
LineStr += dgdData.Columns[j].HeaderText+",";
}
LineStr = LineStr.Substring(0,LineStr.Length-1);
sw.WriteLine (LineStr);
//写入内容
for (i=0;i<dgdData.Items.Count;i++)
{
LineStr = "";
for (j=iFromCol;j<=iToCol;j++)
{
if (dgdData.Items[i].Cells[j].Text!=" ")
{
LineStr +=ts.StringToAlert(dgdData.Items[i].Cells[j].Text.Replace(","," "))+",";
}
else
{
LineStr +=" ,";
}
}
LineStr = LineStr.Substring(0,LineStr.Length-1);
//WriteLine ,分隔符号
sw.WriteLine (LineStr);
}
sw.Close();
long ImageSize;
byte[] ImageBuffer;
ImageSize = (new System.IO.FileInfo(sFile)).Length;
//创建一文件流对象
FileStream fs = new FileStream(sFile, FileMode.OpenOrCreate);
//基于文件流创建二进制读
BinaryReader r = new BinaryReader(fs);
//指到文件的开头位置
r.BaseStream.Seek(0, SeekOrigin.Begin);
ImageBuffer = r.ReadBytes(Int32.Parse(ImageSize.ToString()));
string[] sf1 = System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(sFileName)).Split(new Char[] { '\\' });
sFileName = sf1[sf1.Length - 1]+".csv";
page.Response.Clear();
page.Response.ContentType = "application/ms-excel";
page.Response.AddHeader("Content-Disposition", "attachment;filename=" + sFileName);
page.Response.BinaryWrite(ImageBuffer);
fs.Close();
page.Response.End();
if (bAllowPage)
{
dgdData.AllowPaging = true;
dgdData.DataBind();
}
return sUrl;
}
//导出信息
protected void lnkToExcel_Click(object sender, System.EventArgs e)
{
DataSet ds=GetDataSet();//根据情况查询到的DataSet集合
Response.Write(PageCtrl.ExportDsToCsvFile(this, ds, "xxxxx表"));
}