Asp.Net 常用工具类之Office-文档操作(6)

本文介绍如何使用Spire.DataExport组件将DataTable数据导出为Word、PDF及HTML格式文件,并提供了详细的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

    文档一直是老大难问题,君不知,代码用时方恨少!有一套成熟的文件帮助类能很大程度上减少寻找各种资料的时间。

 

    记得以前做一个业务,需要导出协议,一份可编辑,一份不可编辑。那么Word和PDF是最好的选择,Word可编辑,PDF只给客户方面看!

 


 

 

 

    前两天复习了一下Excel的操作,主要运用到NPOI组件。

 

    今天给大家带来的是另一个组件Spire.DataExport的使用,主要是进行HTML,Word,PDF的导出操作。

 

    第一次用到Spire.DataExport还是去年上半年的时候。说实话,非常强大,特别是针对于文档的转换和导入导出操作,非常便利,且使用简单,大家有兴趣的可以去官网查看相关资料,Demo非常清晰明了。

 

    DataTable转Word

    

   /// <summary>
        /// DataTable导出到Word
        /// </summary>
        /// <param name="filename">文件名称和路径</param>
        /// <param name="dt">dt</param>
        /// <param name="isweb">是否web导出</param>
        public static void DataTableToWord(string filename, DataTable dt, bool isweb = true)
        {
            if (dt != null && dt.Rows.Count > 0)
            {
                if (filename.IndexOf(".doc", StringComparison.OrdinalIgnoreCase) < 0 && filename.IndexOf(".docx", StringComparison.OrdinalIgnoreCase) < 0)
                    filename += ".doc";

                RTFExport word = new RTFExport
                {
                    DataSource = Spire.DataExport.Common.ExportSource.DataTable,
                    DataTable = dt,
                    ActionAfterExport = Spire.DataExport.Common.ActionType.OpenView
                };

                using (MemoryStream ms = new MemoryStream())
                {
                    word.SaveToStream(ms);
                    if (!isweb)
                    {
                        if (!filename.Contains("\\"))
                            filename = Config.Config.GenerateFilePath("Office") + filename;

                        if (!File.Exists(filename))
                        {
                            using (FileStream fs = new FileStream(filename, FileMode.CreateNew))
                            {
                                fs.Write(ms.ToArray(), 0, ms.ToArray().Length);
                                fs.Close();
                            }
                        }
                    }
                    else
                    {
                        HttpContext curContext = HttpContext.Current;
                        curContext.Response.ContentType = "application/vnd.ms-word";
                        curContext.Response.ContentEncoding = Encoding.UTF8;
                        curContext.Response.Charset = "";
                        curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filename, Encoding.UTF8));
                        curContext.Response.BinaryWrite(ms.GetBuffer());
                        curContext.Response.End();
                    }
                }
            }
        } 

 

 

    DataTable转PDF

 

    

   /// <summary>
        /// DataTable导出到PDF
        /// </summary>
        /// <param name="filename">文件名称和路径</param>
        /// <param name="dt">dt</param>
        /// <param name="isweb">是否web导出</param>
        public static void DataTableToPDF(string filename, DataTable dt, bool isweb = true)
        {
            if (dt != null && dt.Rows.Count > 0)
            {
                if (filename.IndexOf(".pdf", StringComparison.OrdinalIgnoreCase) < 0)
                    filename += ".pdf";

                Spire.DataExport.PDF.PDFExport pdf = new Spire.DataExport.PDF.PDFExport
                {
                    DataSource = Spire.DataExport.Common.ExportSource.DataTable,
                    DataTable = dt,
                    ActionAfterExport = Spire.DataExport.Common.ActionType.OpenView
                };

                using (MemoryStream ms = new MemoryStream())
                {
                    pdf.SaveToStream(ms);
                    if (!isweb)
                    {
                        if (!filename.Contains("\\"))
                            filename = Config.Config.GenerateFilePath("Office") + filename;

                        if (!File.Exists(filename))
                        {
                            using (FileStream fs = new FileStream(filename, FileMode.CreateNew))
                            {
                                fs.Write(ms.ToArray(), 0, ms.ToArray().Length);
                                fs.Close();
                            }
                        }
                    }
                    else
                    {
                        HttpContext curContext = HttpContext.Current;
                        curContext.Response.ContentType = "application/pdf";
                        curContext.Response.ContentEncoding = Encoding.UTF8;
                        curContext.Response.Charset = "";
                        curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filename, Encoding.UTF8));
                        curContext.Response.BinaryWrite(ms.GetBuffer());
                        curContext.Response.End();
                    }
                }
            }

 

 

    DataTable转HTML

 

    

  /// <summary>
        /// DataTable导出到HTML
        /// </summary>
        /// <param name="filename">文件名称和路径</param>
        /// <param name="dt">dt</param>
        /// <param name="isweb">是否web导出</param>
        public static void DataTableToHTML(string filename, DataTable dt, bool isweb = true)
        {
            if (dt != null && dt.Rows.Count > 0)
            {
                if (filename.IndexOf(".html", StringComparison.OrdinalIgnoreCase) < 0)
                    filename += ".html";
                HTMLExport html = new HTMLExport
                {
                    ActionAfterExport = ActionType.None, 
                    HtmlStyle = HtmlStyle.MSMoney,
                    DataSource = ExportSource.DataTable,
                    DataTable = dt
                };

                using (MemoryStream ms = new MemoryStream())
                {
                    html.SaveToStream(ms);
                    if (!isweb)
                    {
                        if (!filename.Contains("\\"))
                            filename = Config.Config.GenerateFilePath("Office") + filename;

                        if (!File.Exists(filename))
                        {
                            using (FileStream fs = new FileStream(filename, FileMode.CreateNew))
                            {
                                fs.Write(ms.ToArray(), 0, ms.ToArray().Length);
                                fs.Close();
                            }
                        }
                    }
                    else
                    {
                        HttpContext curContext = HttpContext.Current;
                        curContext.Response.ContentType = "text/html";
                        curContext.Response.ContentEncoding = Encoding.UTF8;
                        curContext.Response.Charset = "";
                        curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filename, Encoding.UTF8));
                        curContext.Response.BinaryWrite(ms.GetBuffer());
                        curContext.Response.End();
                    }
                }
            }
        }

 

 

OK,各位看官,近期的文档操作写到这里喏,感谢大家的支持,您的支持是我的动力!

下一期给大家带来的是Config文件操作,敬请期待!!!

 

转载于:https://www.cnblogs.com/heimalang/p/6529024.html

作为ASP.NET项目的开发者,在应对用户的Word、Excel文档时,您是否迫切希望Visual Studio工具箱里能有现成的Word、Excel标准ASP.NET控件可用就太好了?现在梦想已经成真,想在网页上显示编辑Word、Excel文档并且调用微软Office的强大功能,就直接从工具箱拖动一个PageOffice控件到Web页面上就可以了,就和使用常用的TextBox控件一样简单方便。 PageOffice是什么? PageOffice for ASP.NET是一款非常优秀的专业的集成微软OFFICE功能的ASP.NET控件平台,能够帮助Web开发人员轻松实现在网页中嵌入运行微软Office的特殊功能。PageOffice把微软复杂的Office编程接口(COM API) 有效地整合于 ASP.NET 环境,通过简化的.NET库接口为开发者提供了在Web项目里获得Office众多强大功能的机会,并且能够同时利用来自 .NET Framework 的开发效率和软件功能。 集成PageOffice不但能够实现在线编辑、保存真正的Office文档,而且还可以轻松实现Word、Excel文档的动态数据填充、格式控制和用户输入提交的高级复杂功能。只要集成PageOffice,您将能够轻松应对在Web项目开发中遇见的绝大部分和Office文档有关的功能和难题。您只需把精力集中在项目业务逻辑上,Office技术问题就交给PageOffice实现解决吧。 PageOffice除了提供Word/Excel动态数据填充,格式控制,Word/Excel用户输入提交,Word/Excel/PowerPoint/WPS等Office文档的在线打开、只读浏览、编辑、保存等功能外,还给在线协同办公提供了强大的支持功能:可编辑区域控制,强制痕迹保留,并发编辑控制,手写批注,手写签名,圈阅签字,电子印章、动态模板套红等。 专业的MSDN风格的开发帮助,上百的示例代码,确保您的开发效率事半功倍。 运行环境 服务器端:Windows2003、Windows2008、Windows2012及Windows XP、Windows7、Windows8等(包括64位版本);.Netframework2.0及以上版本。 客户端:Windows XP、Windows Vista、Windows7、Windows8及以上版本(包括64位版本);Microsoft Office2003、2007、2010、2013;IE 6.0、7.0、8.0、9.0、10.0。 名称:PageOffice for ASP.NET专业版 2.0 下载:http://www.zhuozhengsoft.com/down/PageOffice_ASP.NET.rar 大小:13.8MB 版本:专业版 2.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值