精华内容
下载资源
问答
  • 3.保存WORD(id标识+日期 防止文件重复.)然后供用户下载.(扩展,可以安装WORD转PDF组件 在服务端就可以找到生成后的WORD转换PDF供用户下载,满足一部分文件安全性要求比较高,不允许用户修改.) 具体代码如下: ...

    运行环境:WIN7 X64 + iis6.1                                                                                              

    开发环境:vs2012+SQL2005                                                                                              

    服务器环境:2003 X64 + SQL2005 + IIS 6.0                                                                      

    需求: 企业中需要各种各样的报表诸如WORD,简单还好说,稍微比较复杂点的,需要根据录入的信息去生成特定格式的WORD.大概15页左右包含[基本信息][业务情况][联系人信息][店面图片][记录描述][财务指标数据][评分卡][信用评级][反馈信息]等;有些内容不固定诸如[记录描述]中有可能有没有记录,有可能是1-5条数据 也有可能是超过10条的数据.还有要支持图片的插入,WORD排版等因素.

    方案:根本业务部门给出的WORD样本制作WORD文档模板(即xxx.dot文件)设置[书签],然后用应用程序调用本地WORD的COM对象接口,查找[书签]填充数据;

    排版问题:文档模板可以适用模板随时可以调整,删减内容还要删减对应的[书签]否则会有[书签]找不到的问题.

    图片插入:[书签]支持图片插入;

    不固定的记录:我分为二种情况.1.动态数据量小的3条以内,那么我就以最大为主在WORD中占位3条数据.  2.数据量大的咨询业务部门实际数目设置最大数,然后用书签占位,相当与把动态数据都搞成固定数.都是基于实际工作量战线拉太长于实际实现不利.(有兴趣的朋友可以去研究下[动态占位]问题,需要解决掉,因为模板设置,占位都需要参考业务部门给出样本WORD来对比手工占位,系统占位就要考虑换行,空格等问题.)


    其他:[书签]使用方法,根据样本WORD,打开WORD另存为.dot格式,鼠标点击需要插入[书签]的位置,点击菜单栏[插入]-[书签],键入书签名即可.

    查找[书签],Ctrl+F 查找选择[定位]选项卡 定位目标[书签]


    代码实现思路:

    1.整理需要填充到WORD模板中的数据

    2.调用CCWordApp查找模板.dot 根据[书签]去填充(文本,数字,图片)

    3.保存WORD(id标识+日期 防止文件重复.)然后供用户下载.(扩展,可以安装WORD转PDF组件 在服务端就可以找到生成后的WORD转换PDF供用户下载,满足一部分文件安全性要求比较高,不允许用户修改.)


    具体代码如下:

    业务代码

    using Microsoft.Office.Interop.Word;
    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data.SqlClient;
    using System.IO;
    using System.Reflection;
    using System.Web;
    using System.Web.UI.WebControls;
    
    public partial class CustInfoManage_PrintPage : System.Web.UI.Page
    {
        object missing = System.Reflection.Missing.Value;
        object readOnly = false;
        object isVisible = true;
        private CCWordApp test;
    
        DAL Da = new DAL();
    
    
    	/// <summary>
        /// 使用模板
        /// </summary>
        public void OpenModelWordSave(object sender, EventArgs e)
        {
            //根据 客户编码 获取并组织WORD文档所需的所有信息.
            string CustCode = ShowCustLabel.Text;
    
            if (CustCode == "")
            {
                return;
            }
    
            #region 填充信息整理 此处省略
            //String gsmc = Dr1["SaleComp"].ToString();//公司名称
    		#endregion
    
            try
            {
                test = new CCWordApp();
                test.Open(System.Configuration.ConfigurationManager.AppSettings["WordMod"] + "template1.dot");
                
                #region 查找书签并替换
                test.GotoBookMark("gsmc");
                test.InsertText(gsmc);
                test.SetFont("nothing");
    
                test.GotoBookMark("dmcqxz_C");
                test.InsertText(dmcqxz_C);
                test.SetFont("nothing");
    
                if (!String.IsNullOrWhiteSpace(dmtp1_C))
                {
                    test.GotoBookMark("dmtp1_C");
                    test.InsertPicture(System.Configuration.ConfigurationManager.AppSettings["OtherImage"] + dmtp1_C);
                    test.SetFont("nothing");
                }
    
                if (!String.IsNullOrWhiteSpace(dmtp2_C))
                {
                    test.GotoBookMark("dmtp2_C");
                    test.InsertPicture(System.Configuration.ConfigurationManager.AppSettings["OtherImage"] + dmtp2_C);
                    test.SetFont("nothing");
                }
    
                if (!String.IsNullOrWhiteSpace(cktp1_C))
                {
                    test.GotoBookMark("cktp1_C");
                    test.InsertPicture(System.Configuration.ConfigurationManager.AppSettings["OtherImage"] + cktp1_C);
                    test.SetFont("nothing");
                }
    
                if (!String.IsNullOrWhiteSpace(cktp2_C))
                {
                    test.GotoBookMark("cktp2_C");
                    test.InsertPicture(System.Configuration.ConfigurationManager.AppSettings["OtherImage"] + cktp2_C);
                    test.SetFont("nothing");
                }
    
                test.GotoBookMark("dyfxjhyhck_D");
                test.InsertText(dyfxjhyhck_D);
                test.SetFont("nothing");
    
                #endregion
    
                string createTime = DateTime.Now.ToString("yyyyMMddHHmmss");
                string fileName = CustCode + "_" + createTime + ".doc";
                test.SaveAs(System.Configuration.ConfigurationManager.AppSettings["WordDoc"] + fileName);
                test.Quit();
    
                #region 保存到数据库
                string InsertCommand = "INSERT INTO [CRM_CB_DownFileWord] "
                   + "( [CustCode],[fileName], [createTime])"
                   + " VALUES "
                   + "(@CustCode,@fileName, @createTime)";
    
                SqlCommand SqlCmd = new SqlCommand(InsertCommand);
                SqlCmd.Parameters.Add("@CustCode", System.Data.SqlDbType.Decimal).Value = CustCode;
                SqlCmd.Parameters.Add("@fileName", System.Data.SqlDbType.NVarChar).Value = fileName;
                SqlCmd.Parameters.Add("@createTime", System.Data.SqlDbType.NVarChar).Value = createTime;
    
                string Mess = "";
                if (Da.ExecuteNonQuery(SqlCmd))
                {
                    Mess = CustCode + " 保存成功!";
                    BaseCls.Alert(Page, Mess);
                }
                else
                {
                    BaseCls.Alert(Page, "错误,请检查!");
                    return;
                }
                #endregion
            }
    
            catch (Exception exc)
            {
                test.Quit();
                throw (exc);
            }
    
        }
    
    
    
    
    
    
    }


    CCWordApp实体类:

    using System;
    using System.ComponentModel;
    
    public class CCWordApp
    {
        private Microsoft.Office.Interop.Word.ApplicationClass oWordApplic;	// a reference to Word application 引用Word应用程序
        private Microsoft.Office.Interop.Word.Document oDoc;					// a reference to the document 引用文档
    
    
        public CCWordApp()
        {
            // activate the interface with the COM object of Microsoft Word
            //激活与Microsoft Word的COM对象的接口
            oWordApplic = new Microsoft.Office.Interop.Word.ApplicationClass();
        }
    
        /// <summary>
        /// 插入图片
        /// </summary>
        /// <param name="picPath"></param>
        public void InsertPicture(string picPath)
        {
            object missing = System.Reflection.Missing.Value;
            oWordApplic.Selection.InlineShapes.AddPicture(picPath, ref missing, ref missing, ref missing);
        }
    
        // Open a file (the file must exists) and activate it  打开一个文件(该文件必须存在),并激活它
        public void Open(string strFileName)
        {
            object fileName = strFileName;
            object readOnly = false;
            object isVisible = true;
            object missing = System.Reflection.Missing.Value;
    
            oDoc = oWordApplic.Documents.Open(ref fileName, ref missing, ref readOnly,
                ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                ref missing, ref missing, ref isVisible, ref missing, ref missing, ref missing);
    
            oDoc.Activate();
        }
    
    
        // Open a new document打开一个新文档
        public void Open()
        {
            object missing = System.Reflection.Missing.Value;
            oDoc = oWordApplic.Documents.Add(ref missing, ref missing, ref missing, ref missing);
    
            oDoc.Activate();
        }
    
    
    
    
        public void Quit()
        {
            object missing = System.Reflection.Missing.Value;
            oWordApplic.Application.Quit(ref missing, ref missing, ref missing);
        }
    
        public void Save()
        {
            oDoc.Save();
        }
    
        public void SaveAs(string strFileName)
        {
            object missing = System.Reflection.Missing.Value;
            object fileName = strFileName;
    
            oDoc.SaveAs(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
        }
    
        // Save the document in HTML format 以HTML格式保存文档
        public void SaveAsHtml(string strFileName)
        {
            object missing = System.Reflection.Missing.Value;
            object fileName = strFileName;
            object Format = (int)Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatHTML;
            oDoc.SaveAs(ref fileName, ref Format, ref missing, ref missing, ref missing, ref missing, ref missing,
                ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
        }
    
    
    
        public void InsertText(string strText)
        {
            oWordApplic.Selection.TypeText(strText);
        }
    
        public void InsertLineBreak()
        {
            oWordApplic.Selection.TypeParagraph();
        }
        public void InsertLineBreak(int nline)
        {
            for (int i = 0; i < nline; i++)
                oWordApplic.Selection.TypeParagraph();
        }
    
    
        // Change the paragraph alignement 更改段落对齐键相
        public void SetAlignment(string strType)
        {
            switch (strType)
            {
                case "Center":
                    oWordApplic.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
                    break;
                case "Left":
                    oWordApplic.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft;
                    break;
                case "Right":
                    oWordApplic.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;
                    break;
                case "Justify":
                    oWordApplic.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify;
                    break;
            }
    
        }
    
    
        // if you use thif function to change the font you should call it again with 如果您使用此功能来改变字体,你应该再次调用它 
        // no parameter in order to set the font without a particular format 为了不带参数设置字体没有特定的格式
        public void SetFont(string strType)
        {
            switch (strType)
            {
                case "Bold":
                    oWordApplic.Selection.Font.Bold = 1;
                    break;
                case "Italic":
                    oWordApplic.Selection.Font.Italic = 1;
                    break;
                case "Underlined":
                    oWordApplic.Selection.Font.Subscript = 0;
                    break;
            }
    
        }
    
        // disable all the style  禁用所有的风格
        public void SetFont()
        {
            oWordApplic.Selection.Font.Bold = 0;
            oWordApplic.Selection.Font.Italic = 0;
            oWordApplic.Selection.Font.Subscript = 0;
    
        }
    
        public void SetFontName(string strType)
        {
            oWordApplic.Selection.Font.Name = strType;
    
        }
    
        public void SetFontSize(int nSize)
        {
            oWordApplic.Selection.Font.Size = nSize;
    
        }
    
        public void InsertPagebreak()
        {
            // VB : Selection.InsertBreak Type:=wdPageBreak
            object pBreak = (int)Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak;
            oWordApplic.Selection.InsertBreak(ref pBreak);
        }
    
        // Go to a predefined bookmark, if the bookmark doesn't exists the application will raise an error 
        //去到一个预先定义的书签,如果书签不存在应用程序将引发错误
        public void GotoBookMark(string strBookMarkName)
        {
            // VB :  Selection.GoTo What:=wdGoToBookmark, Name:="nome"
            object missing = System.Reflection.Missing.Value;
    
            object Bookmark = (int)Microsoft.Office.Interop.Word.WdGoToItem.wdGoToBookmark;
            object NameBookMark = strBookMarkName;
            oWordApplic.Selection.GoTo(ref Bookmark, ref missing, ref missing, ref NameBookMark);
        }
    
        public void GoToTheEnd()
        {
            // VB :  Selection.EndKey Unit:=wdStory
            object missing = System.Reflection.Missing.Value;
            object unit;
            unit = Microsoft.Office.Interop.Word.WdUnits.wdStory;
            oWordApplic.Selection.EndKey(ref unit, ref missing);
    
        }
        public void GoToTheBeginning()
        {
            // VB : Selection.HomeKey Unit:=wdStory
            object missing = System.Reflection.Missing.Value;
            object unit;
            unit = Microsoft.Office.Interop.Word.WdUnits.wdStory;
            oWordApplic.Selection.HomeKey(ref unit, ref missing);
    
        }
    
        public void GoToTheTable(int ntable)
        {
            //	Selection.GoTo What:=wdGoToTable, Which:=wdGoToFirst, Count:=1, Name:=""
            //    Selection.Find.ClearFormatting
            //    With Selection.Find
            //        .Text = ""
            //        .Replacement.Text = ""
            //        .Forward = True
            //        .Wrap = wdFindContinue
            //        .Format = False
            //        .MatchCase = False
            //        .MatchWholeWord = False
            //        .MatchWildcards = False
            //        .MatchSoundsLike = False
            //        .MatchAllWordForms = False
            //    End With
    
            object missing = System.Reflection.Missing.Value;
            object what;
            what = Microsoft.Office.Interop.Word.WdUnits.wdTable;
            object which;
            which = Microsoft.Office.Interop.Word.WdGoToDirection.wdGoToFirst;
            object count;
            count = 1;
            oWordApplic.Selection.GoTo(ref what, ref which, ref count, ref missing);
            oWordApplic.Selection.Find.ClearFormatting();
    
            oWordApplic.Selection.Text = "";
    
    
        }
    
        public void GoToRightCell()
        {
            // Selection.MoveRight Unit:=wdCell
    
            object missing = System.Reflection.Missing.Value;
            object direction;
            direction = Microsoft.Office.Interop.Word.WdUnits.wdCell;
            oWordApplic.Selection.MoveRight(ref direction, ref missing, ref missing);
        }
    
        public void GoToLeftCell()
        {
            // Selection.MoveRight Unit:=wdCell
    
            object missing = System.Reflection.Missing.Value;
            object direction;
            direction = Microsoft.Office.Interop.Word.WdUnits.wdCell;
            oWordApplic.Selection.MoveLeft(ref direction, ref missing, ref missing);
        }
    
        public void GoToDownCell()
        {
            // Selection.MoveRight Unit:=wdCell
    
            object missing = System.Reflection.Missing.Value;
            object direction;
            direction = Microsoft.Office.Interop.Word.WdUnits.wdLine;
            oWordApplic.Selection.MoveDown(ref direction, ref missing, ref missing);
        }
    
        public void GoToUpCell()
        {
            // Selection.MoveRight Unit:=wdCell
    
            object missing = System.Reflection.Missing.Value;
            object direction;
            direction = Microsoft.Office.Interop.Word.WdUnits.wdLine;
            oWordApplic.Selection.MoveUp(ref direction, ref missing, ref missing);
        }
    
    
        // this function doesn't work 这个功能不起作用
        public void InsertPageNumber(string strType, bool bHeader)
        {
            object missing = System.Reflection.Missing.Value;
            object alignment;
            object bFirstPage = false;
            object bF = true;
            //if (bHeader == true)
            //WordApplic.Selection.HeaderFooter.PageNumbers.ShowFirstPageNumber = bF;
            switch (strType)
            {
                case "Center":
                    alignment = Microsoft.Office.Interop.Word.WdPageNumberAlignment.wdAlignPageNumberCenter;
                    //WordApplic.Selection.HeaderFooter.PageNumbers.Add(ref alignment,ref bFirstPage);
                    //Word.Selection objSelection = WordApplic.pSelection;
    
                    //oWordApplic.Selection.HeaderFooter.PageNumbers.Item(1).Alignment = Microsoft.Office.Interop.Word.WdPageNumberAlignment.wdAlignPageNumberCenter;
                    break;
                case "Right":
                    alignment = Microsoft.Office.Interop.Word.WdPageNumberAlignment.wdAlignPageNumberRight;
                    //oWordApplic.Selection.HeaderFooter.PageNumbers.Item(1).Alignment = Microsoft.Office.Interop.Word.WdPageNumberAlignment.wdAlignPageNumberRight;
                    break;
                case "Left":
                    alignment = Microsoft.Office.Interop.Word.WdPageNumberAlignment.wdAlignPageNumberLeft;
                    oWordApplic.Selection.HeaderFooter.PageNumbers.Add(ref alignment, ref bFirstPage);
                    break;
            }
    
        }
    
    
    }
    //object units = WdUnits.wdCharacter;
    //object last=doc.Characters.Count;
    //doc.Range(ref first, ref last).Delete(ref units, ref last)


    发布测试环境可能会遇到的问题1:

    “/”应用程序中的服务器错误。

    检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问。 (异常来自 HRESULT:0x80070005 (E_ACCESSDENIED))。

    说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

    异常详细信息: System.UnauthorizedAccessException: 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问。 (异常来自 HRESULT:0x80070005 (E_ACCESSDENIED))。 

    ASP.NET 无权访问所请求的资源。请考虑对 ASP.NET 请求标识授予访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}\ASPNET,在 IIS 6 和 IIS 7 上为网络服务,在 IIS 7.5 上为配置的应用程序池标识)。如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。 

    To grant ASP.NET access to a file, right-click the file in File Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.

    源错误: 

    行 1679:        catch (Exception exc)
    行 1680:        {
    行 1681:            throw (exc);
    行 1682:            //StatusMessage.Text = exc.Message;
    行 1683:            //StatusMessage.Visible = true;

    源文件: e:\T1Web - 测试\CustInfoManage\PrintPage.aspx.cs    行: 1681 

    堆栈跟踪: 

    [UnauthorizedAccessException: 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问。 (异常来自 HRESULT:0x80070005 (E_ACCESSDENIED))。]
       CustInfoManage_PrintPage.OpenModelWordSave(Object sender, EventArgs e) in e:\T1Web - 测试\CustInfoManage\PrintPage.aspx.cs:1681
       System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9556538
       System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724
    


    版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.18067


    解决方案:                                                                                                                           

    参考此文链接:http://axislover.blog.163.com/blog/static/10776515200832531059319/

    如果无法访问摘录如下:

    Application当程序运行到这句时出现下面的错误:检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。3.单击"安全"选项卡,分别在"启动和激活权限"和"访问权限"组中选中"自定义",然后 自定义->编辑->添加ASP.NET账户和IUSER_计算机名。解决方法二:如果上述方法不能解决问题,就应该是权限问题,请尝试用下面 的方法:在web.config中使用身份模拟,在<system.web>节中加入 <identity impersonate="true" userName="你的用户名" password="密码"/> </system.web>

    1:在服务器上安装office的word软件.

    2:在"开始"- >"运行"中输入dcomcnfg.exe启动"组件服务"

    3:依次双击"组件服务"- >"计算机"- >"我的电脑"- >"DCOM配置"

    4:在"DCOM配置"中找到"Microsoft   word应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft   word应用程序属性"对话框

    5:点击"标识"标签,选择"交互式用户"

    6:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加

    一个"NETWORK   SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.

    7:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK

    SERVICE"用户,然后赋予"本地访问"权限.

    这样,我们便配置好了相应的word的DCOM权限.

    注意:这是在WIN2003上配置的,在2000上,可能是配置ASPNET用户

    由于word是在服务器上打开的,所以应该写一个把导出数据保存在服务器上,然后再传递给客户端的方法,最后每次调用这个功能的时候再删除以前在服务器上所生成的所有word

    检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005

    在CSDN上总是有网友问这个问题,自己也遇到过,因些写出来供参考:

    症状:

    oWordApplic = New Word.Application

    当程序运行到这句时出现下面的错误:

    检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。

    oWordApplic = New Word.Application

    当程序运行到这句时出现下面的错误:

    检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。

    解决方法一:

    控制面板-》管理工具-》组件服务-》计算机-》我的电脑-》DCom配置-》找到Microsoft Word文档

    之后

    单击属性打开此应用程序的属性对话框。  

    2. 单击标识选项卡,然后选择交互式用户。

    3.单击"安全"选项卡,分别在"启动和激活权限"和"访问权限"组中选中"自定义",然后

    自定义->编辑->添加ASP.NET账户和IUSER_计算机名

    * 这些帐户仅在计算机上安装有 IIS 的情况下才存在。

    13. 确保允许每个用户访问,然后单击确定。

    14. 单击确定关闭 DCOMCNFG。

    解决方法二:

    如果上述方法不能解决问题,就应该是权限问题,请尝试用下面的方法:

    在web.config中使用身份模拟,在<system.web>节中加入   <identity impersonate="true" userName="你的用户名" password="密码"/>

    </system.web>

    PS:进我自己测试,做完1-7步骤就已经可以修复这个问题了.                                            




    发布测试环境可能会遇到的问题2:

    明明有装Word2007, 并且程序也能用这个组件来操作Word, 可为什么组件服务里面看不到CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件?我是希望能显示CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件, 好设置它的权限了。 省得ASP.NET要模拟帐户

    在64bit系统中的DCOM管理中添加32Bit的Excel、Word等的管理)   

     1).开始--〉运行--〉cmd 
       2)命令提示符下面,输入“mmc -32”回车,打开32的控制台 
       3).文件菜单中,添加删除管理单元--〉“组件服务”(在最下面),确认后,关闭即可。 
       4).开始-管理工具-组件服务,在"DCOM配置"中,可以找到“"Microsoft Excel 应用程序”了。找到“Microsoft Excel 应用程序”,在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应用程序属性"对话框  5).点击“标识”标签,选择“交互式用户” **:这个在32Bit的2003上或XP上不需要,但这里需要。  6).点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限 
       7).依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"用户,然后赋予"本地访问"权限.


    PS:这个问题算是误导了.我是先碰到问题2的,但是按此方法无法解决,用问题1中在"开始"- >"运行"中输入dcomcnfg.exe启动"组件服务"即可查到WORD组件.




    发布测试环境可能会遇到的问题3:

    “/”应用程序中的服务器错误。

    当前标识(IT-CHENXIAOPENG\test)没有对“C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files”的写访问权限。

    说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

    异常详细信息: System.Web.HttpException: 当前标识(IT-CHENXIAOPENG\test)没有对“C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files”的写访问权限。

    源错误: 

    执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

    堆栈跟踪: 

    [HttpException (0x80004005): 当前标识(IT-CHENXIAOPENG\test)没有对“C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files”的写访问权限。]
       System.Web.HttpRuntime.SetUpCodegenDirectory(CompilationSection compilationSection) +9902226
       System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags, PolicyLevel policyLevel, Exception appDomainCreationException) +199
    
    [HttpException (0x80004005): 当前标识(IT-CHENXIAOPENG\test)没有对“C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files”的写访问权限。]
       System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9880168
       System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
       System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254
    


    版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.18067


    PS:这个问题是我自己搞出来的.还记得问题1中我们配置了web.config中设置了一个用TEST(<identityimpersonate="true"userName="test"password="xxxxxxxxxx"/>)我给TEST设置的是管理员组权限.然后为了安全性考虑,将其设置为普通用户组.就出此问题,只需要找到C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files 文件夹,右键-属性-安全 编辑添加TEST用户权限即可解决此问题.


    其实这里有个问题,上面将test用户从管理员用户组变更为普通用户组,网站调用正常.更改用户组 还有一点是:[直到下一次用户登录时对用户组成员关系的更改才生效].

    所以我上面PS中说的才能成功.隔天后我才暴露出了这个问题. 新建了一个管理组用户test2才对比出了这个问题.希望引以为鉴.

    展开全文
  • C# 根据Word模版生成Word文件

    千次阅读 2018-07-19 08:44:30
    Wythe 博客园 首页 新随笔 联系 订阅 管理 随笔 - 35 文章 - 15 评论 - 24 C# 根据Word模版生成Word文件 1,指定的word模版 2,生成word类 添加com Microsoft word 11.0 Ob...

    http://www.cnblogs.com/kingteach/archive/2011/11/22/2258801.html

    Wythe

    随笔 - 35  文章 - 15  评论 - 24

    C# 根据Word模版生成Word文件

    1,指定的word模版

    2,生成word类

    添加com Microsoft word 11.0 Object Library 引用

    using System;

    using System.Collections.Generic;

    using System.Data;

    using System.Windows.Forms;

    using Word = Microsoft.Office.Interop.Word;

    using System.IO;

     

    namespace Headfree.DefUI

    {

        public class WordUtility

        {

            private object tempFile = null;

            private object saveFile = null;

            private static Word._Document wDoc = null; //word文档

            private static Word._Application wApp = null; //word进程

            private object missing = System.Reflection.Missing.Value;

     

            public WordUtility(string tempFile, string saveFile)

            {

                this.tempFile = Path.Combine(Application.StartupPath, @tempFile);

                this.saveFile = Path.Combine(Application.StartupPath, @saveFile);

            }

     

            /// <summary>

            /// 模版包含头部信息和表格,表格重复使用

            /// </summary>

            /// <param name="dt">重复表格的数据</param>

            /// <param name="expPairColumn">word中要替换的表达式和表格字段的对应关系</param>

            /// <param name="simpleExpPairValue">简单的非重复型数据</param>

            public bool GenerateWord(DataTable dt, Dictionary<string, string> expPairColumn, Dictionary<string, string> simpleExpPairValue)

            {

                if (!File.Exists(tempFile.ToString()))

                {

                    MessageBox.Show(string.Format("{0}模版文件不存在,请先设置模版文件。", tempFile.ToString()));

                    return false;

                }

                try

                {

                    wApp = new Word.Application();

     

                    wApp.Visible = false;

     

                    wDoc = wApp.Documents.Add(ref tempFile, ref missing, ref missing, ref missing);

     

                    wDoc.Activate();// 当前文档置前

     

                    bool isGenerate = false;

     

                    if (simpleExpPairValue != null && simpleExpPairValue.Count > 0)

                        isGenerate = ReplaceAllRang(simpleExpPairValue);

     

                    // 表格有重复

                    if (dt != null && dt.Rows.Count > 0 && expPairColumn != null && expPairColumn.Count > 0)

                        isGenerate = GenerateTable(dt, expPairColumn);

     

                    if (isGenerate)

                        wDoc.SaveAs(ref saveFile, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,

                            ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);

     

                    DisposeWord();

     

                    return true;

                }

                catch (Exception ex)

                {

                    MessageBox.Show("生成失败" + ex.Message);

                    return false;

                }

            }

     

            /// <summary>

            /// 单个替换 模版没有重复使用的表格

            /// </summary>

            /// <param name="dc">要替换的</param>

            public bool GenerateWord(Dictionary<string, string> dc)

            {

                return GenerateWord(null, null, dc);

            }

     

     

            private bool GenerateTable(DataTable dt, Dictionary<string, string> expPairColumn)

            {

                try

                {

                    int tableNums = dt.Rows.Count;

     

                    Word.Table tb = wDoc.Tables[1];

     

                    tb.Range.Copy();

     

                    Dictionary<string, object> dc = new Dictionary<string, object>();

                    for (int i = 0; i < tableNums; i++)

                    {

                        dc.Clear();

     

                        if (i == 0)

                        {

                            foreach (string key in expPairColumn.Keys)

                            {

                                string column = expPairColumn[key];

                                object value = null;

                                value = dt.Rows[i][column];

                                dc.Add(key, value);

                            }

     

                            ReplaceTableRang(wDoc.Tables[1], dc);

                            continue;

                        }

     

                        wDoc.Paragraphs.Last.Range.Paste();

     

                        foreach (string key in expPairColumn.Keys)

                        {

                            string column = expPairColumn[key];

                            object value = null;

                            value = dt.Rows[i][column];

                            dc.Add(key, value);

                        }

     

                        ReplaceTableRang(wDoc.Tables[1], dc);

                    }

     

     

                    return true;

                }

                catch (Exception ex)

                {

                    DisposeWord();

                    MessageBox.Show("生成模版里的表格失败。" + ex.Message);

                    return false;

                }

            }

     

            private bool ReplaceTableRang(Word.Table table, Dictionary<string, object> dc)

            {

                try

                {

                    object replaceArea = Word.WdReplace.wdReplaceAll;

     

                    foreach (string item in dc.Keys)

                    {

                        object replaceKey = item;

                        object replaceValue = dc[item];

                        table.Range.Find.Execute(ref replaceKey, ref missing, ref missing, ref missing,

                          ref  missing, ref missing, ref missing, ref missing, ref missing,

                          ref  replaceValue, ref replaceArea, ref missing, ref missing, ref missing,

                          ref  missing);

                    }

                    return true;

                }

                catch (Exception ex)

                {

                    DisposeWord();

                    MessageBox.Show(string.Format("{0}模版中没有找到指定的要替换的表达式。{1}", tempFile, ex.Message));

                    return false;

                }

            }

     

            private bool ReplaceAllRang(Dictionary<string, string> dc)

            {

                try

                {

                    object replaceArea = Word.WdReplace.wdReplaceAll;

     

                    foreach (string item in dc.Keys)

                    {

                        object replaceKey = item;

                        object replaceValue = dc[item];

                        wApp.Selection.Find.Execute(ref replaceKey, ref missing, ref missing, ref missing,

                          ref  missing, ref missing, ref missing, ref missing, ref missing,

                          ref  replaceValue, ref replaceArea, ref missing, ref missing, ref missing,

                          ref  missing);

                    }

                    return true;

                }

                catch (Exception ex)

                {

                    MessageBox.Show(string.Format("{0}模版中没有找到指定的要替换的表达式。{1}", tempFile, ex.Message));

                    return false;

                }

            }

     

            private void DisposeWord()

            {

                object saveOption = Word.WdSaveOptions.wdSaveChanges;

     

                wDoc.Close(ref saveOption, ref missing, ref missing);

     

                saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;

     

                wApp.Quit(ref saveOption, ref missing, ref missing); //关闭Word进程

            }

        }

    }

    3,效果

     

    分类: CommonUtil

    标签: c# word 模版 导出

    好文要顶 关注我 收藏该文  

    Wythe
    关注 - 2
    粉丝 - 10

    +加关注

    2

    0

    « 上一篇:sql 日期函数
    » 下一篇:MessageBoxUtil(转)

    posted @ 2011-11-22 14:45 Wythe 阅读(8280) 评论(4) 编辑 收藏

    评论列表

      

    #1楼2013-07-30 15:35 _YMW  

    怎么调用啊?GenerateWord这个方法传入的参数看不太懂。请指教

    支持(0)反对(0)

      

    #2楼2014-04-14 17:01 cherry1986  

    同问

    支持(0)反对(0)

      

    #3楼2014-09-19 10:07 WaitingEver  

    同上啊

    支持(0)反对(0)

      

    #4楼[楼主] 2014-09-19 10:13 Wythe  

    @ WaitingEver
    /// <summary>
    /// 模版包含头部信息和表格,表格重复使用
    /// </summary>
    /// <param name="dt">重复表格的数据</param>
    /// <param name="expPairColumn">word中要替换的表达式和表格字段的对应关系</param>
    /// <param name="simpleExpPairValue">简单的非重复型数据</param>
    有注释啊

    支持(0)反对(0)

    刷新评论刷新页面返回顶部

    注册用户登录后才能发表评论,请 登录 或 注册访问网站首页。

    【推荐】超50万VC++源码: 大型组态工控、电力仿真CAD与GIS源码库!
    【推荐】如何快速搭建人工智能应用?
    【大赛】2018首届“顶天立地”AI开发者大赛

    腾讯云0710

    最新IT新闻:
    · 小米正式发布区块链产品“米粒”
    · 上海市消保委:高德地图等APP申请权限与实际功能不完全对应
    · AMD股价今年已增长61% 分析师预测12个月内冲击21美元
    · 外媒:中兴通讯据悉已偿还4亿美元3年期银团贷款
    · 何小鹏购买小米股票后,雷军前往小鹏汽车参观
    » 更多新闻...

    最新知识库文章:

    · 危害程序员职业生涯的三大观念
    · 断点单步跟踪是一种低效的调试方法
    · 测试 | 让每一粒尘埃有的放矢
    · 从Excel到微服务
    · 如何提升你的能力?给年轻程序员的几条建议

    » 更多知识库文章...

    公告

    昵称:Wythe
    园龄:8年11个月
    粉丝:10
    关注:2

    +加关注

    < 2011年11月 >
    30 31 1 2 3 4 5
    6 7 8 9 10 11 12
    13 14 15 16 17 18 19
    20 21 22 23 24 25 26
    27 28 29 30 1 2 3
    4 5 6 7 8 9 10

    搜索

     

     

    常用链接

    我的标签

    随笔分类

    随笔档案

    最新评论

    阅读排行榜

    评论排行榜

    推荐排行榜

    Copyright ©2018 Wythe

    展开全文
  •  1:在php中如何把html中的内容生成word文档中  2:php把html中的内容生成word文档中时,不居中显示问题,即会默认按照web视图进行显示。  3:php把html中的内容生成word文档中时,相关样式不兼容问题 ...

    在这篇文章中主要解决两个问题:

       1:在php中如何把html中的内容生成到word文档中

       2:php把html中的内容生成到word文档中时,不居中显示问题,即会默认按照web视图进行显示。

       3:php把html中的内容生成到word文档中时,相关样式不兼容问题

    正文:

       echo '<html xmlns:o="urn:schemas-microsoft-com:office:office"  xmlns:w="urn:schemas-microsoft-com:office:word"  xmlns="http://www.w3.org/TR/REC-html40">
                  <head>
                       <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
                       <xml><w:WordDocument><w:View>Print</w:View></xml>
                       <script src="includes/js/ztree/js/jquery-1.4.4.min.js" type="text/javascript"></script>
                </head>';

    echo '<body><table class="table_dayin">
        <caption class="table_caption">';
        echo "数字化教学系统电子备课稿<br>
            <span>学科 <em style="border-bottom: 1px solid #545454;">语文</em>学校 <em style="border-bottom: 1px solid #545454;">实验中学</em></span>
        </caption>";
    echo '</table></body></html>';

                    ob_start(); //打开缓冲区
     header("Cache-Control: public");
    Header("Content-type: application/octet-stream"); 
    Header("Accept-Ranges: bytes"); 

    if (strpos($_SERVER["HTTP_USER_AGENT"],'MSIE')) {
      header('Content-Disposition: attachment; filename=test.doc');
      }else if (strpos($_SERVER["HTTP_USER_AGENT"],'Firefox')) {
      Header('Content-Disposition: attachment; filename=test.doc'); 
      } else {
      header('Content-Disposition: attachment; filename=test.doc');
      }
      header("Pragma:no-cache");
    header("Expires:0");
    ob_end_flush();//输出全部内容到浏览器 

    注:以上代码部分提供了在php程序文件中生成内容到word文档中并提供下载功能。

           针对第2个问题,下载到本地的word文档打开后显示默认按照web视图进行显示的问题:如下图:

         按照默认web视图显示:

    如果按照正常的页面视图进行显示的话,需要在头部添加一行xml标示进行设置(蓝色代码部分):<xml><w:WordDocument><w:View>Print</w:View></xml>,添加后下载到本地的word文档打开后显示如下图:


    针对第三个问题就是有一些样式不兼容问题,比如顶部的大标题下面的相关属性的下划线标注显示:

      我们在html中的样式中添加了border-bottom: 1px solid #545454;这个样式(蓝色代码部分),即:<em style="border-bottom: 1px solid #545454;">,但是下划线还是没有显示,因为在word中不识别。如下图:


    解决方法就是按照word识别的下标样式进行更改,即:<em style="text-decoration: underline;">,更改为这个样式后,即在下载到本地的word文档打开后就有下划线标示显示了。


    授之于鱼,不如授之于渔,我把我的关于这个解决样式不兼容的解决方法给大家分享一下:

       一:找个web版在线编辑器,然后在里面随便输入几个文字,然后添加下划线标示

       二:然后点击编辑器上面的查看源代码按钮,可以看到刚才添加的那个下划线标示的属性即为text-decoration: underline;而不是html中的样式标示:border-bottom: 1px solid #545454;

       好了,针对以上相关问题就到这里,如有问题请大家提出来,我们共同讨论解决哈。


    展开全文
  • PHP HTML生成word

    千次阅读 2018-03-13 14:46:14
    /** * 根据HTML代码获取word文档内容 * 创建一个本质为mht的文档,该函数会分析文件内容并从远程下载页面中的图片资源 * 该函数依赖于类WordMake * 该函数会分析img标签,...* @param string $absolutePath 网页的...
    /**
    * 根据HTML代码获取word文档内容
    * 创建一个本质为mht的文档,该函数会分析文件内容并从远程下载页面中的图片资源
    * 该函数依赖于类WordMake
    * 该函数会分析img标签,提取src的属性值。但是,src的属性值必须被引号包围,否则不能提取
    *
    * @param string $content HTML内容
    * @param string $absolutePath 网页的绝对路径。如果HTML内容里的图片路径为相对路径,那么就需要填写这个参数,来让该函数自动填补成绝对路径。这个参数最后需要以/结束
    * @param bool $isEraseLink 是否去掉HTML内容中的链接
    */
    // 手动下载下Wordmaker
    
    function WordMake( $content , $absolutePath = "" , $isEraseLink = true )
    {
    import("ORG.Util.Wordmaker");
    $mht = new \MhtFileMaker();
    if ($isEraseLink){
    $content = preg_replace('/<a\s*.*?\s*>(\s*.*?\s*)<\/a>/i' , '$1' , $content);   //去掉链接
    }
    $images = array();
    $files = array();
    $matches = array();
    //这个算法要求src后的属性值必须使用引号括起来
    if ( preg_match_all('/<img[.\n]*?src\s*?=\s*?[\"\'](.*?)[\"\'](.*?)\/>/i',$content ,$matches ) ){
    $arrPath = $matches[1];
    for ( $i=0;$i<count($arrPath);$i++)
    {
    $path = $arrPath[$i];
    $imgPath = trim( $path );
    if ( $imgPath != "" )
    {
    $files[] = $imgPath;
    if( substr($imgPath,0,7) == 'http://')
    {
    //绝对链接,不加前缀
    }
    else
    {
    $imgPath = $absolutePath.$imgPath;
    }
    $images[] = $imgPath;
    }
    }
    }
    $mht->AddContents("tmp.html",$mht->GetMimeType("tmp.html"),$content);
    for ( $i=0;$i<count($images);$i++)
    {
    $image = $images[$i];
    if ( @fopen($image , 'r') )
    {
    $imgcontent = @file_get_contents( $image );
    if ( $content )
    $mht->AddContents($files[$i],$mht->GetMimeType($image),$imgcontent);
    }
    else
    {
    echo "file:".$image." not exist!<br />";
    }
    }
    return $mht->GetFile();
    }
    
    function GenerateWord($content){
    	$_path='Uploads/word/'.date('Y-m-d',time()).'/';
    	if (!file_exists($_path)){ mkdir ($_path); }
    	$content = iconv("utf-8", "GBK",$content);
    	$rand=rand(1000,9999);
    
    	$fileContent = WordMake($content,$url);//生成word内容
    	
    	$fp = fopen($_path.$name.time().$rand.".doc", 'w');//打开生成的文档
    	fwrite($fp, $fileContent);//写入包保存文件
    	fclose($fp);
    	return $_path.$name.time().$rand.".doc";
    }

    展开全文
  • Java Freemarker生成word

    2016-07-30 06:27:59
    Java Freemarker生成word freeMaker 简介: FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。它不是面向最终用户的,而是...
  • MFC操作word 配置环境 生成简单报表

    千次阅读 2017-05-02 19:54:53
    一、为MFC配置操作word的环境 ... 2、从类型库MSWORD.OLB导入相关类,具体参见:点击打开链接(一些细节解释参见点击打开链接 使用VS2010操作EXECL),实际测试中将CApplication.h中自动生成的类似#
  • FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序
  • swagger-ui生成word文档

    千次阅读 2019-10-24 13:06:53
    后来出现了swagger在线文档,是一个多么好用的东西啊,当时这个东西上线了就不能开启了,如果甲方需要接口文档当然那边要是觉得在线的也可以就给他们,如果人家说这个不行我们就用swagger生成word离线文档 ...
  • 用js将HTML文本导出生成word文档

    千次阅读 2019-05-23 10:08:59
    在项目开发中中,遇到将HTML导出生成word文档,刚开始在网上找了很多资料,基本都是jQuery中的插件jquery.wordexport.js,刚开始是不想用这个的,这个要引用另一个插件FileSaver.js;但是没有找到更好的方法,所以在...
  • html生成word文档并下载

    千次阅读 2019-04-26 17:23:49
    * @desc生成word文档并下载 * @param $content 文档内容 * @param string $fileName 文档名称 */ function downloadWord($content, $fileName='new_file.doc'){ if(empty($content)){ return; } h...
  • 提取网页内容存储为word的方法

    万次阅读 2017-03-02 16:52:04
    应用需求word是我们平常办公最常用的文字处理软件之一了,但是我们第一手阅读的材料却并不通常是用word来写就的(非doc格式),可能是txt文本,pdf文件,更多的可能就是网页内容了。我们希望有一种轻快便捷的方案...
  • web页面生成word文档

    千次阅读 2008-07-16 11:13:00
    生成固定格式的word文档,如分析报告之类,可以先建立好固定格式的文档模板,把需要动态插入数据或者其他东西的位置标记为书签,web页面的程序再用数据替换书签. protected void Button_Click(object sender, ...
  • PHP生成word的三种方式

    千次阅读 2011-11-30 18:03:10
    最近工作遇到关于生成word的问题 现在总结一下生成word的三种方法。 btw:好像在博客园发表博客只要是标题带PHP的貌似点击量都不是很高(哥哥我标题还是带上PHP了),不知道为什么,估计博客园以net技术为主吧,这...
  • web页面生成word文档

    千次阅读 2007-08-09 13:58:00
    link 生成固定格式的word文档,如分析报告之类,可以先建立好固定格式的文档模板,把需要动态插入数据或者其他东西的位置标记为书签,web页面的程序再用数据替换书签. protected void Button_Click(object sender,...
  • PHP生成WORD的三种方式

    2013-05-02 11:30:34
    最近工作遇到关于生成word的问题 现在总结一下生成word的三种方法。 btw:好像在博客园发表博客只要是标题带PHP的貌似点击量都不是很高(哥哥我标题还是带上PHP了),不知道为什么,估计博客园上net技术大牛比较多...
  • 报表开发神器:phantomjs生成网页PDF ,Echarts报表实战 导航: 报表开发神器:phantomjs生成网页PDF ,Echarts报表实战 一. 关于phantomjs 1.1 什么是phantomjs? 1.2 phantomjs常用API介绍 1.3 使用phantomjs 能...
  • java html内容生成word文件实现代码

    千次阅读 2015-07-13 14:43:31
    处理HTML标签我用的是Jsoup组件,生成word文档这方面我用的是Jacob组件。有兴趣的朋友可以去Google搜索一下这两个组件。大致思路如下: 先利用jsoup将得到的html代码“标准化”(Jsoup.parse(String html))...
  • 认识一个在学校广播电台的学妹, 听她说她们每天都要在网上找新闻, 国际, 国内, 和校内各五篇, 然后将其做成word文档打印, 个人感觉这种活非常浪费时间, 应该写个程序帮我们自动完成. 后来没事的时候就写了这个python...
  • 网页内容写入word文档

    2016-06-17 15:23:24
    根据HTML代码获取word文档内容 * 创建一个本质为mht的文档,该函数会分析文件内容并从远程下载页面中的图片资源 * 该函数依赖于类WordMake * 该函数会分析img标签,提取src的属性值。但是,src的...
  • Word2vec加TextRank算法生成文章摘要

    万次阅读 多人点赞 2017-07-14 11:03:15
    在textrank中,人们用句子的相似性来取代网页之间的相互链接的个数。公式如下:   前面提到计算两个网页之间的互相引用的次数从而得打网页的重要性,那么句子之间的连续如何建立了?传统的方法是比较句子中...
  • 基本思路,就是先去找个爬虫框架把链接网页中内容和图片写到word中,后面在将1万个链接通过位除余分组,开几个线程去写。 1.导入maven依赖jar包 <dependency> <groupId>org.jsoup&l...
  • * @param string $absolutePath 网页的绝对路径。如果HTML内容里的图片路径为相对路径,那么就需要填写这个参数,来让该函数自动填补成绝对路径。这个参数最后需要以/结束 * @param bool $isEraseLink 是否去掉...
  • word技巧

    千次阅读 2018-03-01 21:40:22
    word 高效经典教程(整理版)目录一分钟驾驭word 高效经典教程(整理版)... 6A、基础知识... 61、度量单位... 62、WORD中文字字号与磅的对应关系... 63、字体文件格式...... 96、Word文档超级链接知多...
  • 取任一页面地址作为目标地址,首先在word生成超链接,点击之后会跳转到项目的登陆界面,登陆成功后跳转地址为首页(正常登陆后的界面),而非目标页面; 将目标地址直接粘贴到浏览器地址栏,会跳转到登陆界面,...
  • (前年11月就说要写这篇技术日志了,一直拖到今天,直到自己觉得再不写会忘掉的时候。唉,现在自己果然是很懒啊,争取以后能一个星期写一篇,我... 用Visual C++操纵MS Word: http://www.cnblogs.co
  • 大家有没有这样的场景,在某一个网站,看见了很多美女相片,想把链接全部保存下来,那么就需要一个一个的单击右键,复制链接地址,在到记事本或word等工具中ctrl+c或者右键粘贴,步骤是相当麻烦。做电商的朋友更是悲...
  • word 中简单插入美观的代码

    千次阅读 2017-10-16 10:50:56
    记录一下,在写word中难免遇到需要插入代码的地方,但是word中往往没有像sublime中那样美观...代码复制到如下连接中,然后选择代码高亮,生成网页代码,最后复制,到word中粘贴一下就ok了。很美观。 wrod代码插入链接
  • 自动生成文本摘要

    万次阅读 2018-10-06 14:33:38
    什么是文本摘要生成 如何从网页上提取数据 如何清洗数据 如何构建直方图 如何计算句子分数 如何提取分数最高的句子/摘要 &amp;amp;amp;nbsp; 在继续往下阅读之前,我假设你已经了解下面几...
  • 实现html和word的相互转换(带图片)

    万次阅读 多人点赞 2018-06-16 13:29:10
    目前从html转换的word为doc格式,而图片处理支持的是docx格式,所以需要手动把doc另存为docx,然后才可以进行图片替换。 一.添加maven依赖 主要使用了以下和poi相关的依赖,为了便于获取html的图片元素,还使用了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,945
精华内容 8,378
关键字:

word生成网页链接