您的位置:首页 > 其它

支持 导入 导出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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: