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/