zoukankan      html  css  js  c++  java
  • 支持 导入 导出Excel,导出Word, 导出PDF。

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using iTextSharp;
    using iTextSharp.text;
    using iTextSharp.text.pdf;
    using System.IO;
    using System.Text;
    using System.Data.OleDb;
    
    using System.Collections.Generic;
    using System.Linq;
    
    namespace LinkPower.CivilAviation.Web.UICommon
    {
        public class toDownLoad
        {
            private string strFileName = "";
            public toDownLoad(string _strFileName)
            {
                //
                //TODO: 在此处添加构造函数逻辑
                //
                strFileName = HttpUtility.UrlEncode(_strFileName.Trim(), System.Text.Encoding.UTF8) + DateTime.Now.ToString(@"_yyyyMMddhhmmss");
            }
            /// <summary>
            /// 导出Excel
            /// </summary>
            /// <param name="table">参数类型:DataTable</param>
            public void toExcel(DataTable table)
            {
                try
                {
    
                    DataTable dt = new DataTable();
                    dt = table;
                    StringBuilder sb = new StringBuilder();
                    sb.Append("<table cellspacing="0" cellpadding="5" rules="all" border="1">");
                    sb.Append("<tr style="font-weight: bold; white-space: nowrap;">");
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        sb.Append("<td>").Append(dt.Columns[i].ColumnName).Append("</td>");
                    }
                    sb.Append("</tr>");
    
                    foreach (DataRow row in dt.Rows)
                    {
                        sb.Append("<tr>");
                        for (int i = 0; i < dt.Columns.Count; i++)
                        {
                            sb.Append("<td>").Append(row[i].ToString()).Append("</td>");
                        }
                        sb.Append("</tr>");
                    }
                    sb.Append("</table>");
                    toResponse(sb.ToString(), "application/vnd.ms-excel", ".xls");
                }
                catch
                { }
            }
            /// <summary>
            /// 导出Word
            /// </summary>
            /// <param name="table">参数类型:DataTable</param>
            public void toWord(DataTable table)
            {
                try
                {
                    DataTable dt = new DataTable();
                    dt = table;
                    StringBuilder sb = new StringBuilder();
                    sb.Append("<table cellspacing="0" cellpadding="5" rules="all" border="1">");
                    sb.Append("<tr style="font-weight: bold; white-space: nowrap;">");
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        sb.Append("<td>").Append(dt.Columns[i].ColumnName).Append("</td>");
                    }
                    sb.Append("</tr>");
    
                    foreach (DataRow row in dt.Rows)
                    {
                        sb.Append("<tr>");
                        for (int i = 0; i < dt.Columns.Count; i++)
                        {
                            sb.Append("<td>").Append(row[i].ToString()).Append("</td>");
                        }
                        sb.Append("</tr>");
                    }
                    sb.Append("</table>");
                    toResponse(sb.ToString(), "application/vnd.ms - word", ".doc");
                }
                catch
                { }
            }
            /// <summary>
            /// 导出Excel
            /// </summary>
            /// <param name="table">参数类型:String 可以包含Html代码</param>
            public void toExcel(string strHtmlValue)
            {
                toResponse(strHtmlValue, "application/vnd.ms-excel", ".xls");
            }
            /// <summary>
            /// 导出Word
            /// </summary>
            /// <param name="table">参数类型:String 可以包含Html代码</param>
            public void toWord(string strHtmlValue)
            {
                toResponse(strHtmlValue, "application/vnd.ms-word", ".doc");
            }
            /// <summary>
            /// 导出Excel
            /// </summary>
            /// <param name="table">参数类型:System.Web.UI.Control 建议GridView</param>
            public void toExcel(System.Web.UI.Control source)
            {
                try
                {
                    HttpResponse Response = HttpContext.Current.Response;
                    Response.Clear();
                    Response.Buffer = true;
                    Response.Write("<meta http-equiv=Content-Type content=text/html;charset=gb2312>");
                    Response.AppendHeader("Content-Disposition", "attachment;filename=" + strFileName + ".xls");
                    Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                    Response.AddHeader("base", "target=_blank");
                    Response.ContentType = "application/vnd.ms-excel";
    
                    //关闭控件的视图状态
                    source.Page.EnableViewState = false;
    
                    //初始化HtmlWriter
                    System.IO.StringWriter writer = new System.IO.StringWriter();
                    System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(writer);
                    //source.RenderControl(htmlWriter);
    
                    //预防出现控件必须放在具有 runat=server 的窗体标记内的错误
                    System.Web.UI.Page page = new System.Web.UI.Page();
                    HtmlForm form = new HtmlForm();
                    source.EnableViewState = false;
                    page.EnableEventValidation = false;
                    page.DesignerInitialize();
                    page.Controls.Add(form);
                    form.Controls.Add(source);
                    page.RenderControl(htmlWriter);
    
                    //输出
                    Response.Write(writer.ToString());
                    Response.End();
                }
                catch
                {
                }
            }
            /// <summary>
            /// 导出Word
            /// </summary>
            /// <param name="table">参数类型:System.Web.UI.Control 建议GridView</param>
            public void toWord(System.Web.UI.Control source)
            {
                try
                {
                    HttpResponse Response = HttpContext.Current.Response;
                    Response.Clear();
                    Response.Buffer = true;
                    Response.Write("<meta http-equiv=Content-Type content=text/html;charset=gb2312>");
                    Response.AppendHeader("Content-Disposition", "attachment;filename=" + strFileName + ".doc");
                    Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                    Response.AddHeader("base", "target=_blank");
                    Response.ContentType = "application/vnd.ms-word";
    
                    //关闭控件的视图状态
                    source.Page.EnableViewState = false;
    
                    //初始化HtmlWriter
                    System.IO.StringWriter writer = new System.IO.StringWriter();
                    System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(writer);
                    //source.RenderControl(htmlWriter);
    
                    //预防出现控件必须放在具有 runat=server 的窗体标记内的错误
                    System.Web.UI.Page page = new System.Web.UI.Page();
                    HtmlForm form = new HtmlForm();
                    source.EnableViewState = false;
                    page.EnableEventValidation = false;
                    page.DesignerInitialize();
                    page.Controls.Add(form);
                    form.Controls.Add(source);
                    page.RenderControl(htmlWriter);
    
                    //输出
                    Response.Write(writer.ToString());
                    Response.End();
                }
                catch
                { }
            }
            /// <summary>
            /// 导出PDF
            /// </summary>
            /// <param name="strPath">参数类型:System 建议使用Server.MapPath("~")获取根目录</param>
            /// <param name="datatable">参数类型:DataTable</param>
            public void toPDF(string strPath, DataTable datatable)
            {
                try
                {
                    string strFilesPath = strPath + "\TempPDF";
                    if (!Directory.Exists(strFilesPath))
                    {
                        Directory.CreateDirectory(strFilesPath);
                    }
                    strFilesPath = strFilesPath + "\" + strFileName + ".pdf";
                    Document document = new Document();
                    PdfWriter.GetInstance(document, new FileStream(strFilesPath, FileMode.Create));
                    document.Open();
                    BaseFont bfChinese = BaseFont.CreateFont("C://WINDOWS//Fonts//simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
                    Font fontChinese = new Font(bfChinese, 12, Font.NORMAL, new Color(0, 0, 0));
    
                    //document.Add(new Paragraph(this.TextBox1.Text.ToString(), fontChinese));
    
                    //iTextSharp.text.Image jpeg = iTextSharp.text.Image.GetInstance(Server.MapPath("pic015.jpg"));
                    //document.Add(jpeg);
                    PdfPTable table = new PdfPTable(datatable.Columns.Count);
    
                    for (int i = 0; i < datatable.Rows.Count; i++)
                    {
                        for (int j = 0; j < datatable.Columns.Count; j++)
                        {
                            table.AddCell(new Phrase(datatable.Rows[i][j].ToString(), fontChinese));
                        }
                    }
                    document.Add(table);
    
                    document.Close();
    
                    String FullFileName = strFilesPath;
                    FileInfo DownloadFile = new FileInfo(FullFileName);
                    System.Web.HttpContext.Current.Response.Clear();
                    System.Web.HttpContext.Current.Response.ClearHeaders();
                    System.Web.HttpContext.Current.Response.Buffer = false;
                    System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
                    System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + strFileName + ".pdf");
                    System.Web.HttpContext.Current.Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
                    System.Web.HttpContext.Current.Response.WriteFile(DownloadFile.FullName);
                    System.Web.HttpContext.Current.Response.Flush();
                    System.Web.HttpContext.Current.Response.End();
                }
                catch
                {
                }
            }
            protected void toResponse(string strResValue, string strContentType, string strGS)
            {
                HttpResponse Response = HttpContext.Current.Response;
                Response.Clear();
                Response.Buffer = true;
                Response.Write("<meta http-equiv=Content-Type content=text/html;charset=gb2312>");
                Response.AppendHeader("Content-Disposition", "attachment;filename=" + strFileName + strGS);
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                Response.AddHeader("base", "target=_blank");
                Response.ContentType = strContentType;
                Response.Write(strResValue);
                Response.End();
            }
            /// <summary>
            /// 从Excel中导出数据到DataTable中
            /// </summary>
            /// <param name="TempFilePath">参数类型:Excel文件的位置</param>
            /// <param name="strSheetName">参数类型:Excel文件中包含数据的Sheet名称,默认为""=Sheet1</param>
            /// <returns name="DataTable">返回Excel中数据</returns>
            public DataTable intoDataTable(string TempFilePath, string strSheetName)
            {
                string strSheetNameValue = "Sheet1{1}quot;;
                if (strSheetName.Trim() != "")
                {
                    strSheetNameValue = strSheetName + "{1}quot;;
                }
                string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + TempFilePath + ";Extended Properties=Excel 8.0";
                //链接Excel
                OleDbConnection cnnxls = new OleDbConnection(strConn);
                //读取Excel里面有 表Sheet1
                OleDbDataAdapter oda = new OleDbDataAdapter("select * from [" + strSheetNameValue + "]", cnnxls);
                DataSet ds = new DataSet();
                //将Excel里面有表内容装载到内存表中!
                oda.Fill(ds);
                DataTable dt = ds.Tables[0];
                return dt;
            }
        }
    }

    其中using  iTextSharp;的引用dll 下载地址:http://sourceforge.net/projects/itextsharp/

  • 相关阅读:
    二分图最大匹配的K&#246;nig定理及其证明
    HDOJ 2389 Rain on your Parade
    HDOJ 1083 Courses
    HDOJ 2063 过山车
    POJ 1469 COURSES
    UESTC 1817 Complete Building the Houses
    POJ 3464 ACM Computer Factory
    POJ 1459 Power Network
    HDOJ 1532 Drainage Ditches
    HDU 1017 A Mathematical Curiosity
  • 原文地址:https://www.cnblogs.com/kainjie/p/3449611.html
Copyright © 2011-2022 走看看