精华内容
下载资源
问答
  • 打开“比较文档“对话框,然后依次选择需要对比的两个Word文档,设置完毕,点击“确定”按钮。可以点击更多(更少),进行比较设置。 此时,会出现一个新文档,新文档左侧则显示具体的修改内容,双击某一项,则...

    首先将修改前后的文档分别保存,然后打开Word,点击【审阅】-【比较】按钮。

     

    打开“比较文档“对话框,然后依次选择需要对比的两个Word文档,设置完毕,点击“确定”按钮。可以点击更多(更少),进行比较设置。

     

    此时,会出现一个新文档,新文档左侧则显示具体的修改内容,双击某一项,则可以精确定位到文档中修改的位置点;中间则是比较文档,它通过红色粗线显示修改的大致位置;右侧分别为原文档及修订的文档。

     

    技巧提示:在对比模式下,选择【审阅】-【修订】-【所有标记】选择,那么,被修改处内容将以红色标注显示。

    摘抄参考自:

    http://www.360doc.com/content/19/0425/11/18781560_831344526.shtml

    展开全文
  • 这个是个比较传统的解决思路,搜一搜其实发现很多人都这么干,这批人难道也是对上述方法(jsp直接显示)失望了后找的这种模式?呵呵比较常用的开源免费的有且只有几种,选择其中几种我尝试了一下。首先想到的是POI,但...

    这个是个比较传统的解决思路,搜一搜其实发现很多人都这么干,这批人难道也是对上述方法(jsp直接显示)失望了后找的这种模式?呵呵

    比较常用的开源免费的有且只有几种,选择其中几种我尝试了一下。

    首先想到的是POI,但处理 Word 没有想象的中的那样优秀,出来的基本一团糟,没有任何格式性可谈,而且需要一个字符一个字符的处理特别费力,结果不理想代码就不贴了,曾使用它来处理过 Excel 觉得还很优秀!

    然后就另找了一个叫 OpenOffice,经过尝试发现经过它转换出来的文档,虽然缺失格式,但也不是不能接受,自己再另行加处理也许能成。将Word转Html的原理是这样的:

    1、客户上传Word文档到服务器

    2、服务器调用OpenOffice程序打开上传的Word文档

    3、OpenOffice将Word文档另存为Html格式

    基于这个基础上的实现需要下载 openOffice 。

    3、安装 OpenOffice,成功后在安装目录下启动监听端口:

    soffice -headless -accept="socket,port=8100;urp;"

    可以通过 netstat –an|findstr “8100” 查看端口是否监听;如图

    4、打开Eclipse新建项目,导入Jodconverter/lib 下面的 jar 。具体的需要哪些自己可以尝试。我比较懒就都添加了。

    下面是代码:

    importjava.io.File;importjava.net.ConnectException;importcom.artofsolving.jodconverter.DocumentConverter;importcom.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;importcom.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;importcom.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;public classOfficeConverter {public static voidmain(String[] args) {

    File inputFile= new File("C:/test/yy.doc");

    File outputFile= new File("C:/test/yy.html");

    OpenOfficeConnection con= new SocketOpenOfficeConnection(8100);try{

    con.connect();

    }catch(ConnectException e) {

    System.err.println("文件转换出错,请检查OpenOffice服务是否启动。");

    e.printStackTrace();

    }

    DocumentConverter converter= newOpenOfficeDocumentConverter(con);

    converter.convert(inputFile, outputFile);

    con.disconnect();

    }

    }

    总结:使用OpenOffice作为转换引擎把word文档转换成html,比起使用微软的com组件有跨平台的优势,而且比Apache poi(POI貌似只能获取word中的文本内容,图片和表格,图片和表格的定位很是个问题,获取样式要一个字符一个字符的分析麻烦且效率低下)方便且简单,但是个人觉得这个结果其实并不理想,排版仍然缺失很严重。

    普通情况下的排版差别见下图:

    通过程序读取解析后的文档格式如下图,经过对比貌似比 word 自身的另存为还好看点,相信经过不断优化以后应该能完美支持解析。但是细心点还是会看见单元格样式变了,排版变了,如果要求不是太高,这个也能满足需求了。

    不过如果只需要保存相关的文字的话,上面转化的html内容冗余比较多,可以用 java 正则表达式来处理多余字符串,详见下面的代码:

    protected staticString clearFormat(String htmlStr, String docImgPath) {//获取body内容的正则

    String bodyReg = "

    ";

    Pattern bodyPattern=Pattern.compile(bodyReg);

    Matcher bodyMatcher=bodyPattern.matcher(htmlStr);if(bodyMatcher.find()) {//获取BODY内容,并转化BODY标签为DIV

    htmlStr = bodyMatcher.group().replaceFirst("

    ", "
    ");
    展开全文
  • 1)公司的项目比较老,采用硬编码模式,意味着word改一个字就要发布一次代码。发布检验就浪时间了。 2)由于硬编码,采用的是这种格式,手写代码比较废时,而且编写表格时会遇到单元格字数变多被撑大,表格变形的情况...

    最近,我写公司项目word导出功能,应该只有2小时的工作量,却被硬生生的拉长2天,项目上线到业务正常运行也被拉长到2个星期。

    为什么如此浪费时间呢?

        1)公司的项目比较老,采用硬编码模式,意味着word改一个字就要发布一次代码。发布检验就浪时间了。

        2)由于硬编码,采用的是这种格式,手写代码比较废时,而且编写表格时会遇到单元格字数变多被撑大,表格变形的情况。表格长度需要人工计算。这类意想不到的问题。

        3)公司测试库数据不全,测试库数据无法全面覆盖线上环境。这又拉长了检验时间。

        4)项目分支被正在开发的分支合并了,一下子被拉长了4天。

    这简单功能浪费太多时间了,我在网上搜了一下word导出的方案:

        第一种:硬编码,就是公司的方案,问题太多了不用考虑。

        第二种:通过Sql查询数据,存入字典,再通过第三方组件替换word的文字。这种方案,简单容操作,sql查询可以换成存储过程,也存在缺点,1)存储过程要写提很细,逻辑算法都写在存储过程,存储过程可能变得很复杂。2)不支持表格内插入多条数据。

        第三种:通过Sql查询数据,使用Razor模板引擎生成word。这种方案解决了存储过程复杂问题,但Razor模板内使用这种格式,所以写模板时很麻烦。

        第四种:通过Sql查询数据,存入字典,再通过第三方组件替换word的域。这种方案与第二种方案类似,对我个人来说,我不喜欢修改域。

    但是,我想要一个简单、容易控制、表格内能插入多条数据、可商用的方案。

        简单:类似第二种方案,数据存入字典,循环替换word的文字,存储过程可以写得简单。

        容易控制:模板不能使用这种格式,最好能用office直接控制表格文字大小、颜色。

        表格内能插入多条数据:我写的组件内必须有索引。

        可商用:拒绝商用组件。

    经过几天琢磨,我找到可行的方案:存储过程+模板+算法可控

    依赖组件:

        DocumentFormat.OpenXml,微软官方开源组件,支持docx文件,MIT协议。

        ToolGood.Algorithm,本人的Excel计算引擎组件,MIT协议,可简化存储过程。

    核心代码:

        ReplaceTemplate 替换Word文字

        ReplaceTable 替换Word表格并支持插入

    ReplaceTemplate 替换Word文字

    public class WordTemplate : AlgorithmEngine    {        private readonly static Regex _tempEngine = new Regex("^###([^::]*)[::](.*)$");// 定义临时变量        private readonly static Regex _tempMatch = new Regex("(#[^#]+#)");//         private readonly static Regex _simplifyMatch = new Regex(@"(\{[^\{\}]*\})");//简化文本 只读取字段        private void ReplaceTemplate(Body body)        {                        var tempMatches = new List<string>();            List deleteParagraph = new List();            foreach (var paragraph in body.Descendants()) {                var text = paragraph.InnerText.Trim();                var m = _tempEngine.Match(text);                if (m.Success) {                    var name = m.Groups[1].Value.Trim();                    var engine = m.Groups[2].Value.Trim();                    var value = this.TryEvaluate(engine, "");                    this.AddParameter(name, value);                    deleteParagraph.Add(paragraph);                    continue;                }                var m2 = _tempMatch.Match(text);                if (m2.Success) {                    tempMatches.Add(m2.Groups[1].Value);                    continue;                }                var m3 = _simplifyMatch.Match(text);                if (m3.Success) {                    tempMatches.Add(m3.Groups[1].Value);                    continue;                }            }            foreach (var paragraph in deleteParagraph) {                paragraph.Remove();            }            Regex nameReg = new Regex(string.Join("|", listNames));            foreach (var m in tempMatches) {                string value;                if (m.StartsWith("#")) {                    var eval = m.Trim('#');                    ……                    value = this.TryEvaluate(eval, "");                } else {                    value = this.TryEvaluate(m.Replace("{", "[").Replace("}", "]"), "");                }                foreach (var paragraph in body.Descendants()) {                    ReplaceText(paragraph, m, value);                }            }        }// 代码来源 https://stackoverflow.com/questions/19094388/openxml-replace-text-in-all-document        private void ReplaceText(Paragraph paragraph, string find, string replaceWith){    ….}}

    ReplaceTable 替换Word表格并支持插入

    private readonly static Regex _rowMatch = new Regex(@"({{(.*?)}})");//        private int _idx;        private List<string> listNames = new List<string>();        private void ReplaceTable(Body body)        {            foreach (Table table in body.Descendants
    ()) { foreach (TableRow row in table.Descendants()) { bool isRowData = false; foreach (var paragraph in row.Descendants()) { var text = paragraph.InnerText.Trim(); if (_rowMatch.IsMatch(text)) { isRowData = true; break; } } if (isRowData) { // 防止 list[i].Id 写成 [list][[i]].Id 这种繁杂的方式 Regex nameReg = new Regex(string.Join("|", listNames)); Dictionary<string, string> tempMatches = new Dictionary<string, string>(); foreach (Paragraph ph in row.Descendants()) { var m2 = _rowMatch.Match(ph.InnerText.Trim()); if (m2.Success) { var txt = m2.Groups[1].Value; var eval = txt.Substring(2, txt.Length - 4).Trim(); eval = nameReg.Replace(eval, new MatchEvaluator((k) => { return "[" + k.Value + "]"; })); tempMatches[txt] = eval; } } TableRow tpl = row.CloneNode(true) as TableRow; TableRow lastRow = row; TableRow opRow = row; var startIndex = UseExcelIndex ? 1 : 0; _idx = startIndex; while (true) { if (_idx > startIndex) { opRow = tpl.CloneNode(true) as TableRow; } bool isMatch = true; foreach (var m in tempMatches) { string value = this.TryEvaluate(m.Value, null); if (value == null) { isMatch = false; break; } foreach (var ph in opRow.Descendants()) { ReplaceText(ph, m.Key, value); } } if (isMatch==false) { //当数据为空时,清空数据 if (_idx == startIndex) { foreach (var ph in opRow.Descendants()) { ph.RemoveAllChildren(); } } break; } if (_idx > startIndex) { table.InsertAfter(opRow, lastRow); } lastRow = opRow; _idx++; } } } } }

    案例上手:

    后台代码:

    // 获取数据            var helper = SqlHelperFactory.OpenSqliteFile("test.db");        .......            var dt = helper.ExecuteDataTable("select * from Introduction");            var tableTests = helper.Select("select * from TableTest");            ToolGood.OutputWord.WordTemplate openXmlTemplate = new ToolGood.OutputWord.WordTemplate();            // 加载数据            openXmlTemplate.SetData(dt);            openXmlTemplate.SetListData("list", JsonConvert.SerializeObject(tableTests));            // 生成模板 一            openXmlTemplate.BuildTemplate("test.docx", "openxml_2.docx");            // 生成模板 二            var bs = openXmlTemplate.BuildTemplate("test.docx");            File.WriteAllBytes("openxml_1.docx", bs);

    Word模板:

    3e74ca7db75b69737e9910c8ee521e4a.png

    Word生成后:

    675ea142744b01e60cccc5bbe0fefbb8.png

     后记:

    WordTemplate 类,主要实现了三个功能:

        1、自定义替换word中的文字标签,当标签不存在,则设置为空字符串;

        2、可以有word中定义公式,替换所对应的值;

        3、在表格插入多行数据,当数据为0时清空单元格。

    通过上面三个功能,WordTemplate 类将代码中的word生成方法分离出来。

    系统后台需要配置 存储过程与word模板信息,就可以将word生成与系统更新完成分离开了。

    系统后台可以配置公式,则公式修改不需要更新word模板。

    注:一般业务人员是看得懂四则运算的,部分财务人员更是了解Excel公式,可以减少开发协助时间。

    完整代码:https://github.com/toolgood/ToolGood.OutputWord

    该组件已上传到Nuget:Install-Package ToolGood.OutputWord

    Excel公式参考:https://github.com/toolgood/ToolGood.Algorithm

    展开全文
  • (给DotNet加星标,提升.Net技能)转自:ToolGoodcnblogs.com/toolgood/p/13512091.html前言最近,我写公司...1、公司的项目比较老,采用硬编码模式,意味着word改一个字就要发布一次代码。发布检验就浪时间了。2、由...

    (给DotNet加星标,提升.Net技能)

    转自:ToolGoodcnblogs.com/toolgood/p/13512091.html

    前言

    最近,我写公司项目word导出功能,应该只有2小时的工作量,却被硬生生的拉长2天,项目上线到业务正常运行也被拉长到2个星期。

    为什么如此浪费时间呢?

    1、公司的项目比较老,采用硬编码模式,意味着word改一个字就要发布一次代码。发布检验就浪时间了。

    2、由于硬编码,采用的是这种格式,手写代码比较废时,而且编写表格时会遇到单元格字数变多被撑大,表格变形的情况。表格长度需要人工计算。这类意想不到的问题。

    3、公司测试库数据不全,测试库数据无法全面覆盖线上环境。这又拉长了检验时间。

    4、项目分支被正在开发的分支合并了,一下子被拉长了4天。

    这简单功能浪费太多时间了,我在网上搜了一下word导出的方案:

    • 第一种:硬编码,就是公司的方案,问题太多了不用考虑。

    • 第二种:通过Sql查询数据,存入字典,再通过第三方组件替换word的文字。这种方案,简单容操作,sql查询可以换成存储过程,也存在缺点,1)存储过程要写提很细,逻辑算法都写在存储过程,存储过程可能变得很复杂。2)不支持表格内插入多条数据。

    • 第三种:通过Sql查询数据,使用Razor模板引擎生成word。这种方案解决了存储过程复杂问题,但Razor模板内使用这种格式,所以写模板时很麻烦。

    • 第四种:通过Sql查询数据,存入字典,再通过第三方组件替换word的域。这种方案与第二种方案类似,对我个人来说,我不喜欢修改域。

    但是,我想要一个简单、容易控制、表格内能插入多条数据、可商用的方案。

    • 简单:类似第二种方案,数据存入字典,循环替换word的文字,存储过程可以写得简单。

    • 容易控制:模板不能使用这种格式,最好能用office直接控制表格文字大小、颜色。

    表格内能插入多条数据:我写的组件内必须有索引。

    可商用:拒绝商用组件。

    经过几天琢磨,我找到可行的方案:存储过程+模板+算法可控

    依赖组件

    • DocumentFormat.OpenXml,微软官方开源组件,支持docx文件,MIT协议。

    • ToolGood.Algorithm,本人的Excel计算引擎组件,MIT协议,可简化存储过程。

    核心代码

    • ReplaceTemplate 替换Word文字

    • ReplaceTable 替换Word表格并支持插入

    ReplaceTemplate 替换Word文字

    public class WordTemplate : AlgorithmEngine
    {
    private readonly static Regex _tempEngine = new Regex("^###([^::]*)[::](.*)$");// 定义临时变量
    private readonly static Regex _tempMatch = new Regex("(#[^#]+#)");//
    private readonly static Regex _simplifyMatch = new Regex(@"(\{[^\{\}]*\})");//简化文本 只读取字段
    private void ReplaceTemplate(Body body){
    var tempMatches = new List<string>();
    List deleteParagraph = new List();foreach (var paragraph in body.Descendants()) {var text = paragraph.InnerText.Trim();var m = _tempEngine.Match(text);if (m.Success) {var name = m.Groups[1].Value.Trim();var engine = m.Groups[2].Value.Trim();var value = this.TryEvaluate(engine, "");this.AddParameter(name, value);
    deleteParagraph.Add(paragraph);continue;
    }var m2 = _tempMatch.Match(text);if (m2.Success) {
    tempMatches.Add(m2.Groups[1].Value);continue;
    }var m3 = _simplifyMatch.Match(text);if (m3.Success) {
    tempMatches.Add(m3.Groups[1].Value);continue;
    }
    }foreach (var paragraph in deleteParagraph) {
    paragraph.Remove();
    }
    Regex nameReg = new Regex(string.Join("|", listNames));foreach (var m in tempMatches) {string value;if (m.StartsWith("#")) {var eval = m.Trim('#');
    ……value = this.TryEvaluate(eval, "");
    } else {value = this.TryEvaluate(m.Replace("{", "[").Replace("}", "]"), "");
    }foreach (var paragraph in body.Descendants()) {
    ReplaceText(paragraph, m, value);
    }
    }
    }//代码来源 https://stackoverflow.com/questions/19094388/openxml-replace-text-in-all-documentprivate void ReplaceText(Paragraph paragraph, string find, string replaceWith){….}
    }

    ReplaceTable 替换Word表格并支持插入

    private readonly static Regex _rowMatch = new Regex(@"({{(.*?)}})");//
    private int _idx;
    private List<string> listNames = new List<string>();
    private void ReplaceTable(Body body){
    foreach (Table table in body.Descendants
    ()) {foreach (TableRow row in table.Descendants()) {bool isRowData = false;foreach (var paragraph in row.Descendants()) {var text = paragraph.InnerText.Trim();if (_rowMatch.IsMatch(text)) {
    isRowData = true;break;
    }
    }if (isRowData) {// 防止 list[i].Id 写成 [list][[i]].Id 这种繁杂的方式
    Regex nameReg = new Regex(string.Join("|", listNames));
    Dictionary<string, string> tempMatches = new Dictionary<string, string>();foreach (Paragraph ph in row.Descendants()) {var m2 = _rowMatch.Match(ph.InnerText.Trim());if (m2.Success) {var txt = m2.Groups[1].Value;var eval = txt.Substring(2, txt.Length - 4).Trim();
    eval = nameReg.Replace(eval, new MatchEvaluator((k) => {return "[" + k.Value + "]";
    }));
    tempMatches[txt] = eval;
    }
    }
    TableRow tpl = row.CloneNode(true) as TableRow;
    TableRow lastRow = row;
    TableRow opRow = row;var startIndex = UseExcelIndex ? 1 : 0;
    _idx = startIndex;while (true) {if (_idx > startIndex) { opRow = tpl.CloneNode(true) as TableRow; }bool isMatch = true;foreach (var m in tempMatches) {string value = this.TryEvaluate(m.Value, null);if (value == null) {
    isMatch = false;break;
    }foreach (var ph in opRow.Descendants()) {
    ReplaceText(ph, m.Key, value);
    }
    }if (isMatch==false) {//当数据为空时,清空数据if (_idx == startIndex) {foreach (var ph in opRow.Descendants()) {
    ph.RemoveAllChildren();
    }
    }break;
    }if (_idx > startIndex) { table.InsertAfter(opRow, lastRow); }
    lastRow = opRow;
    _idx++;
    }
    }
    }
    }
    }

    案例上手

    后台代码

    // 获取数据
    var helper = SqlHelperFactory.OpenSqliteFile("test.db");
    ...

    var dt = helper.ExecuteDataTable("select * from Introduction");
    var tableTests = helper.Select("select * from TableTest");
    ToolGood.OutputWord.WordTemplate openXmlTemplate = new ToolGood.OutputWord.WordTemplate();// 加载数据
    openXmlTemplate.SetData(dt);
    openXmlTemplate.SetListData("list", JsonConvert.SerializeObject(tableTests));// 生成模板 一
    openXmlTemplate.BuildTemplate("test.docx", "openxml_2.docx");// 生成模板 二var bs = openXmlTemplate.BuildTemplate("test.docx");
    File.WriteAllBytes("openxml_1.docx", bs);

    Word模板

    c309e0ae323b7d3bdd723fb1d450b27c.png

    Word生成后

    efc7dcc02df3b6135afe4cb25abade68.png

    后记

    WordTemplate 类,主要实现了三个功能:

    1、自定义替换word中的文字标签,当标签不存在,则设置为空字符串;

    2、可以有word中定义公式,替换所对应的值;

    3、在表格插入多行数据,当数据为0时清空单元格。

    通过上面三个功能,WordTemplate 类将代码中的word生成方法分离出来。

    系统后台需要配置 存储过程与word模板信息,就可以将word生成与系统更新完成分离开了。

    系统后台可以配置公式,则公式修改不需要更新word模板。

    注:一般业务人员是看得懂四则运算的,部分财务人员更是了解Excel公式,可以减少开发协助时间。

    完整代码:https://github.com/toolgood/ToolGood.OutputWord

    该组件已上传到Nuget:Install-Package ToolGood.OutputWord

    Excel公式参考:https://github.com/toolgood/ToolGood.Algorithm

    - EOF -

    推荐阅读  点击标题可跳转ASP.NET 开源导入导出库Magicodes.IE导出ExcelASP.NET开源导入导出库Magicodes.IE导出Pdf.NET Core一行代码导入导出Excel生成Word

    看完本文有收获?请转发分享给更多人

    关注「DotNet」加星标,提升.Net技能 

    732e31ed8e6986ec2fecc94b20b8d4d3.png

    好文章,我在看❤️

    展开全文
  • 最近接到客户需求需要在OA系统里面定制文档(pdf、word)的水印(图片水印、文字水印),网上查了一波资料,不太完全,而且api说明也比较模糊,好了,废话不多说,直接上代码(第一次写,希望大家多多指教¥....
  • 这时候,我们可以利用Word强大的“文档比较”功能实现。点击“审阅”选项卡中的“比较”功能,在“原文档”中点击后面的文件夹找到你原始文件的存放位置,然后在“修订的文档”中找到修改后的文件,确定即可进入自动...
  • 这时候,我们可以利用Word强大的“文档比较”功能实现。点击“审阅”选项卡中的“比较”功能,在“原文档”中点击后面的文件夹找到你原始文件的存放位置,然后在“修订的文档”中找到修改后的文件,确定即可进入自动...
  • word损坏文档恢复

    2012-06-09 22:21:54
    最近大家都在忙着写论文,...只是查了下,网上都是说进word的安全模式,或者删除C:下的某某文件,都没能成功。后来想到邮箱有个word预览功能。于是乎上传到邮箱上,试了下。果真能预览,还能复制。呵呵,这一招不错吧。
  • word 2007 主控文档使用方法

    千次阅读 2011-04-19 09:13:00
    最近在合并一份比较大的标书文件时,发现word在使用拷贝粘贴的方法时经常报“内存不足”的错误,于是想到了使用主控文档处理的方法。 建立主控文档的方法有三种:一是利用输入文章的大纲来建立主文档,...
  • FreeMarker其实是一种比较简单的网页展示技术,说白了就是网页模板和数据模型的结合体。这种结合模式的好处就是,分离了网页界面设计人员和编程人员的工作,让他们各司其职。 据个人理解,FreeMarker大致的工作方式...
  • 大部分情况下,我们更多地习惯于使用Word文字编辑软件来处理,也就是我们所说的Word文档。  倘若仅仅只是一个PDF的处理,那么解决起来也是非常简单的。但是如果要处理的是大量的PDF文件,那么就需要使用到具备...
  • 第一种方法模板文件一般存在下面的路径,看图注意:...路径:C:\Documents and Settings\Administrator\Application Data\Microsoft\Templates第二种方法比较简单了用安全模式打开word以后,新建一个文档如下图在wo...
  • oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...
  • 安卓APP支持office相对来说比较的繁琐,福利来了,我们换个想法,把word文档直接转换成html然后开启webApp模式开观看。瞬间解决了在自己的软件里面打开word文档。 下载JCOB核心源码 当然JCOB如果想要在windows的...
  • 最开始采用了npoi导出word,npoi采用的是遍历整个word文档中的段落,然后读取到标签,然后再将该标签进行替换的模式。但是存在两个问题:1、替换的字符串中加上换行符\n,不起作用,就是在替换的字符串是不能换行的...
  • 比较Asp.net而言,silverlight 导出word或者excel文档要麻烦的多。silverlight 4 只能在OOB模式下,使用Dynamic关键字(如 Dynamic Table)才能调用word组件导出文档。导出word有两种方法,第一种是导入一个word...
  • 一、自身经历在掌握markdown之前,我使用最多的就是word文档。可能对于大家都会觉得word比较好操作,容易上手,但是可能会出现一些格式上面的问题,就不是特别方便的阅读与后期的修改。我认为,学习任何一门语言,...
  • 比较Asp.net而言,silverlight 导出word或者excel文档要麻烦的多。silverlight 4 只能在OOB模式下,使用Dynamic关键字(如 Dynamic Table)才能调用word组件导出文档。导出word有两种方法,第一种是导入一个word...
  • 我们在浏览比较大的word文档或PDF文档是,常常会遇到这种情形:前面看过和当前看的部分显示正常,当我们将鼠标按住滚动条迅速往下翻页的时候,会发现后面的文档还在加载,或者文字已经出来了,但图像还在处理,当然...
  • word如何自动生成目录

    2017-03-14 22:33:16
    单击“插入” -> “引用”→“索引和目录” -> 点击“目录”标签 -> 按下“确定” -> 未找到目录项(因为文档中未先定义目录项)定义目录项:点击“视图”→“大纲”切换至大纲模式(段落级别显示得比较清楚),选定文章...
  • iPhone开发-MVC模式

    2015-01-14 11:29:52
    文章是别人给的一个word文档,无链接。  MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变...
  • 1.概念 多个线程监控某个共享变量,A线程监控到共享变量发生变化后即将触发某个动作,但是此时发现有另外一个线程B已经针对该变量的变化开始了行动,因此A便放弃...再比如,我们在用word编写文档的时候,每次的文字编辑
  • 本markdown文件是北邮模式识别2019上半年学期的2016级本科生最终实验报告-by信通-阴小杰,另附word文档 是markdown文件!可以直接导出pdf和word! 是markdown文件!可以直接导出pdf和word! 是markdown文件!可以...
  • CMMI与敏捷开发模式

    2014-12-31 10:31:10
    1) CMMI 开发模式 优点是开发流程制度化和重视过程(设计,文档,编码,测试,原因分析),强调项目的可控性( Risk 管理),缺点是开发周期长,灵活性差。   CMMI 体系适用范围的特征:产品 / 项目创新要求...
  • 一直以来,使用正则表达式的机会不少,经常用来做...最近我们后端组在协作开发一个对外的后台项目,前端的接口文档是用word写了(汗-_-||,很难用啊,还是markdown比较好)里面有一个接口列表的表格,这里的接口列...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 158
精华内容 63
关键字:

word文档比较模式