支持 导入 导出Excel,导出Word, 导出PDF。
2013-11-29 15:01
302 查看
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/
相关文章推荐
- html导出table支持(excel,png,word,pdf<pdf不太行,中文不支持>)
- 【iOS_GitHub】文档/文件查看器(支持本地或者其他app分享过来的word、excel、pdf、rtf等格式文件)
- DataTable导出为word,excel,html,csv,pdf,.txt
- NPOI导入和导出EXCEL 支持2003/2007
- 记录下Excel的导入导出,及导出word
- 水晶报表导出为pdf, word , excel 格式(已经测试过,实现了该功能)
- 让C# Excel导入导出,支持不同版本的Office
- js的导出Excel,Word,pdf的实现以及服务器端生成pdf的实现
- [导入]OpenOffice 的PDF导出功能支持把网页的表单转为PDF的表单
- GridView Repeater导出PDF-Word-Excel
- NPOI 导入导出excel 支持 03 07
- GridView 导出到 Word/Excel/PDF/CSV
- 让C# Excel导入导出 支持不同版本Office
- java支持xls格式的excel导入和导出
- 类似百度文库在线预览文档flash版(支持word、excel、ppt、pdf)+在线预览文档html版
- C#开发的高性能EXCEL导入、导出工具DataPie(支持MSSQL、ORACLE、ACCESS
- C#开发的高性能EXCEL导入、导出工具DataPie(支持MSSQL、ORACLE、ACCESS,附源码下载地址)
- ASP.NET Core2集成Office Online Server(OWAS)实现办公文档的在线预览与编辑(支持word\excel\ppt\pdf等格式)
- 类似百度文库在线预览文档flash版(支持word、excel、ppt、pdf)+在线预览文档html版