//由于项目中很多地方都要将数据导出为Excel或Word文档,所有干脆写了个公共类,方便调用!当然,很多地方还是参考了网上的资料!
//代码如下:
//
类的说明:web控件数据导出Excel或Word表格
public class ControlToExcel
... {
public ControlToExcel()
...{
}
/**//// <summary>
/// 针对WEB控件导出EXCEL
/// </summary>
/// <param name="control"></param>
/// <param name="ExcelFileName"></param>
public static void ExportToExcel(System.Web.UI.Control control, string ExcelFileName)
...{
HttpContext context = HttpContext.Current;
context.Response.Clear();
context.Response.Buffer = true;
context.Response.Charset = "GB2312";
context.Response.AppendHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(ExcelFileName,System.Text.Encoding.UTF8) + ".xls");
context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
context.Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
control.RenderControl(oHtmlTextWriter);
string charset ="<meta http-equiv="Content-Type" content="text/html; charset=gb2312">";
context.Response.Write(charset+oStringWriter.ToString());
context.Response.End();
}
/**//// <summary>
/// 针对WEB控件导出word
/// </summary>
/// <param name="control"></param>
/// <param name="ExcelFileName"></param>
public static void ExportToWord(System.Web.UI.Control control, string ExcelFileName)
...{
HttpContext context = HttpContext.Current;
context.Response.Clear();
context.Response.Buffer = true;
context.Response.Charset = "GB2312";
context.Response.AppendHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(ExcelFileName,System.Text.Encoding.UTF8) + ".xls");
context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
context.Response.ContentType = "application/ms-Word";//设置输出文件类型为excel文件。
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
control.RenderControl(oHtmlTextWriter);
string charset ="<meta http-equiv="Content-Type" content="text/html; charset=gb2312">";
context.Response.Write(charset+oStringWriter.ToString());
context.Response.End();
}
/**//// <summary>
/// csv文件导入DataSet
/// </summary>
/// <param name="fileName"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public static DataSet ConverCSV2DataSet(string fileName, string tableName)
...{
DataSet ds = new DataSet();
string _filePath, _fileName;
_filePath = fileName.Substring(0, fileName.LastIndexOf(@"") + 1);
_fileName = fileName.Substring(fileName.LastIndexOf(@"")+1);
string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + _filePath + @"" + ";Extended Properties="Text;HDR=Yes;FMT=Delimited"";
OleDbConnection oleCon = new OleDbConnection(conStr);
OleDbDataAdapter da = new OleDbDataAdapter("Select * from " + _fileName,oleCon);
da.Fill(ds,tableName);
oleCon.Close();
return ds;
}
/**//// <summary>
/// DataTable数据导出ExcelCsv文件
/// </summary>
/// <param name="dtSource"></param>
/// <param name="ExcelFileName"></param>
public static void ExportToCsv(DataTable dtSource, string ExcelFileName)
...{
HttpContext context = HttpContext.Current;
context.Response.Clear();
context.Response.Buffer = true;
context.Response.Charset = "GB2312";
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
StringWriter sw=new StringWriter(myCItrad);
string header = "";
foreach(DataColumn column in dtSource.Columns)
...{
if(column.Caption != "")
header += "," + column.Caption;
else
header += "," + column.ColumnName;
}
if(header != "")
header = header.Remove(0,1);
sw.WriteLine(header);
foreach(DataRow dr in dtSource.Rows)
...{
string record = "";
for(int i=0;i<dtSource.Columns.Count;i++)
...{
if(dr[i].ToString().IndexOf(",")<0)
record += "," + dr[i];
else
record += "," + """ + dr[i].ToString().Replace(""","""") + """;
}
if(record != "")
record = record.Remove(0,1);
sw.WriteLine(record);
}
sw.Close();
context.Response.AppendHeader("Content-Disposition","attachment;filename=" + ExcelFileName + ".csv");
context.Response.ContentType = "application/ms-excel";
context.Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
context.Response.Write(sw);
context.Response.End();
}
/**//// <summary>
/// DataTable数据导出Excel
/// </summary>
/// <param name="dtSource"></param>
/// <param name="ExcelFileName"></param>
public static void ExportToExcel(DataTable dtSource, string ExcelFileName)
...{
HttpContext context = HttpContext.Current;
context.Response.Clear();
context.Response.Buffer = true;
context.Response.Charset = "GB2312";
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
StringWriter sw=new StringWriter(myCItrad);
string header = "";
foreach(DataColumn column in dtSource.Columns)
...{
if(column.Caption != "")
header += " " + column.Caption;
else
header += " " + column.ColumnName;
}
if(header != "")
header = header.Remove(0,1) + " ";
sw.Write(header);
foreach(DataRow dr in dtSource.Rows)
...{
string record = "";
for(int i=0;i<dtSource.Columns.Count;i++)
...{
record += " " + dr[i].ToString().Replace(" "," ");
}
if(record != "")
record = record.Remove(0,1) + " ";
sw.Write(record);
}
sw.Close();
context.Response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(ExcelFileName,System.Text.Encoding.UTF8)+ ".xls");
context.Response.ContentType = "application/ms-excel";
context.Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
context.Response.Write(sw);
context.Response.End();
}
}
public class ControlToExcel
... {
public ControlToExcel()
...{
}
/**//// <summary>
/// 针对WEB控件导出EXCEL
/// </summary>
/// <param name="control"></param>
/// <param name="ExcelFileName"></param>
public static void ExportToExcel(System.Web.UI.Control control, string ExcelFileName)
...{
HttpContext context = HttpContext.Current;
context.Response.Clear();
context.Response.Buffer = true;
context.Response.Charset = "GB2312";
context.Response.AppendHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(ExcelFileName,System.Text.Encoding.UTF8) + ".xls");
context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
context.Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
control.RenderControl(oHtmlTextWriter);
string charset ="<meta http-equiv="Content-Type" content="text/html; charset=gb2312">";
context.Response.Write(charset+oStringWriter.ToString());
context.Response.End();
}
/**//// <summary>
/// 针对WEB控件导出word
/// </summary>
/// <param name="control"></param>
/// <param name="ExcelFileName"></param>
public static void ExportToWord(System.Web.UI.Control control, string ExcelFileName)
...{
HttpContext context = HttpContext.Current;
context.Response.Clear();
context.Response.Buffer = true;
context.Response.Charset = "GB2312";
context.Response.AppendHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(ExcelFileName,System.Text.Encoding.UTF8) + ".xls");
context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
context.Response.ContentType = "application/ms-Word";//设置输出文件类型为excel文件。
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
control.RenderControl(oHtmlTextWriter);
string charset ="<meta http-equiv="Content-Type" content="text/html; charset=gb2312">";
context.Response.Write(charset+oStringWriter.ToString());
context.Response.End();
}
/**//// <summary>
/// csv文件导入DataSet
/// </summary>
/// <param name="fileName"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public static DataSet ConverCSV2DataSet(string fileName, string tableName)
...{
DataSet ds = new DataSet();
string _filePath, _fileName;
_filePath = fileName.Substring(0, fileName.LastIndexOf(@"") + 1);
_fileName = fileName.Substring(fileName.LastIndexOf(@"")+1);
string conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + _filePath + @"" + ";Extended Properties="Text;HDR=Yes;FMT=Delimited"";
OleDbConnection oleCon = new OleDbConnection(conStr);
OleDbDataAdapter da = new OleDbDataAdapter("Select * from " + _fileName,oleCon);
da.Fill(ds,tableName);
oleCon.Close();
return ds;
}
/**//// <summary>
/// DataTable数据导出ExcelCsv文件
/// </summary>
/// <param name="dtSource"></param>
/// <param name="ExcelFileName"></param>
public static void ExportToCsv(DataTable dtSource, string ExcelFileName)
...{
HttpContext context = HttpContext.Current;
context.Response.Clear();
context.Response.Buffer = true;
context.Response.Charset = "GB2312";
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
StringWriter sw=new StringWriter(myCItrad);
string header = "";
foreach(DataColumn column in dtSource.Columns)
...{
if(column.Caption != "")
header += "," + column.Caption;
else
header += "," + column.ColumnName;
}
if(header != "")
header = header.Remove(0,1);
sw.WriteLine(header);
foreach(DataRow dr in dtSource.Rows)
...{
string record = "";
for(int i=0;i<dtSource.Columns.Count;i++)
...{
if(dr[i].ToString().IndexOf(",")<0)
record += "," + dr[i];
else
record += "," + """ + dr[i].ToString().Replace(""","""") + """;
}
if(record != "")
record = record.Remove(0,1);
sw.WriteLine(record);
}
sw.Close();
context.Response.AppendHeader("Content-Disposition","attachment;filename=" + ExcelFileName + ".csv");
context.Response.ContentType = "application/ms-excel";
context.Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
context.Response.Write(sw);
context.Response.End();
}
/**//// <summary>
/// DataTable数据导出Excel
/// </summary>
/// <param name="dtSource"></param>
/// <param name="ExcelFileName"></param>
public static void ExportToExcel(DataTable dtSource, string ExcelFileName)
...{
HttpContext context = HttpContext.Current;
context.Response.Clear();
context.Response.Buffer = true;
context.Response.Charset = "GB2312";
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
StringWriter sw=new StringWriter(myCItrad);
string header = "";
foreach(DataColumn column in dtSource.Columns)
...{
if(column.Caption != "")
header += " " + column.Caption;
else
header += " " + column.ColumnName;
}
if(header != "")
header = header.Remove(0,1) + " ";
sw.Write(header);
foreach(DataRow dr in dtSource.Rows)
...{
string record = "";
for(int i=0;i<dtSource.Columns.Count;i++)
...{
record += " " + dr[i].ToString().Replace(" "," ");
}
if(record != "")
record = record.Remove(0,1) + " ";
sw.Write(record);
}
sw.Close();
context.Response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(ExcelFileName,System.Text.Encoding.UTF8)+ ".xls");
context.Response.ContentType = "application/ms-excel";
context.Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
context.Response.Write(sw);
context.Response.End();
}
}