将数据导出为Excel或Word的公共类!

//由于项目中很多地方都要将数据导出为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();

        }

    }

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值