精华内容
下载资源
问答
  • 由于最近工作需要使用java代码生成多样化格式word文档,第一个想到了xml来实现,在网上找了几个例子再结合自己的项目需求,最终实现了想要的效果。 具体的思路是: 1、将要生成的word文档(我这里使用的是word...

    由于最近工作需要使用java代码生成多样化格式的word文档,第一个想到了xml来实现,在网上找了几个例子再结合自己的项目需求,最终实现了想要的效果。

    具体的思路是:
    1、将要生成的word文档(我这里使用的是word2003版本)内需要替换的动态写入的内容替换成公式(例如:$test)。如下图:
    这里写图片描述
    2、将word文档另存为xml格式,另存的时候要注意版本
    3、将生成的xml文档拷贝至一个空的word文档内部,保存该新的word文档。
    4、将保存的word文档存储至数据库blob字段。
    5、在程序运行的时候可以将存储的xml内容的word文档读取出来,获取到xml内容的字符串,对内容公式进行替换。获取到替换内容之后的xml字符串。
    6、下面开始使用freemarker对xml字符串进行处理,生成我们想要的word文档。

    关键代码如下:

        /**
         * 方法说明: 根据前台传递的xml格式模板生成word文件并将doc的byte[]内容存储至数据库
         *       (也可以根据指定路径的xml格式文件模板来生成,具体查看freeMarker API doc)
         * @param sTemplateXML  前台传递过来的xml格式doc模板文件
         * @throws Exception
         */
        public void onCreateSaveDoc(String sTemplateXML)
        {  
            String sDocName = "";
            FileInputStream inputStreamSave = null;
            ByteArrayOutputStream outSave = null;
            Writer out = null;
            try
            {  
                sDocName = "test.doc";
    
                Configuration configure = new Configuration();  
                configure.setDefaultEncoding("utf-8");  
                //加载需要装填的模板  
                Template template  = null;  
                //设置对象包装器  
                configure.setObjectWrapper(new DefaultObjectWrapper());  
                //设置异常处理器  
                configure.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);  
                StringTemplateLoader stringLoader = new StringTemplateLoader();
                //加载模板文件  
                stringLoader.putTemplate("docTemplate", sTemplateXML);
                configure.setTemplateLoader(stringLoader);
                template = configure.getTemplate("docTemplate","utf-8");
                //指定服务器存储临时文件的文件夹
                String path = this.getClass().getClassLoader().getResource("/").getPath();
                String configPath = path.replaceAll("/WEB-INF/classes/", "/docTemp/");  //适用于webLogic上传文件至war包下
                // ***创建服务器存放上传文件的文件夹,没有则创建***
                File file = new File(configPath);
                if (!file.exists())
                {
                    file.mkdirs();
                }
                String sDocPath = configPath + "/" + sDocName;
                //输出文档  
                File uploadFile = new File(sDocPath);//这里是生成好的word文档的输出地址  
                out = null;  
                out= new BufferedWriter(new OutputStreamWriter(new FileOutputStream(uploadFile),"utf-8"));                                     
                template.process(null,out);  
                uploadFile.delete();  
                out.close();  
            }
            catch (Exception e) 
            {  
                e.printStacktrace();
            } 
            finally 
            {
                out.close();
            }
        }
    展开全文
  • 项目做完后一般会要求写文档,其中包括两部分一是代码文档,一是数据库文档我一般使用navicat管理数据库,在...经过尝试navicate是不行的phpmyadmin虽然有word格式导出,但不包含注释(是不是很蛋疼) 经过我尝试每...

    项目做完后一般会要求写文档,其中包括两部分
    一是代码文档,一是数据库文档
    我一般使用navicat管理数据库,在无法使用navicat的情况下使用phpmyadmin
    数据表和字段一般都是写有注释的,尤其是大项目
    如果可以直接将表导出并且包含注释,那么就达到了自动化构建数据库文档的目的。

    经过尝试navicate是不行的
    phpmyadmin虽然有word格式导出,但不包含注释(是不是很蛋疼)

    经过我尝试每种格式的导出,最终发现了一个解决方案

    导出为 OpenDocument Text 格式的文件,也就是后缀名为 .odt
    mysql快速生成word格式文档
    选择仅导出结构,勾选包含注释
    然后网上搜 odt 转 word 有很多提供在线转换服务的网站
    比如https://cn.office-converter.com/ODT-to-Doc
    这时转换为word 我们的目的就达到了!
    从此写好注释,文档一键生成。

    代码文档可以使用代码遍历项目文件的方式,目前因为代码注释格式不规范,仅能自动生成目录树。
    以后另起文章分享自动生成代码文档。

    转载于:https://blog.51cto.com/8292516/2058326

    展开全文
  • vscode自动格式化文档

    千次阅读 2019-06-12 12:54:00
    如果你用的是 prettier 格式化,这个也不是对象属性就会自动换行, 而是代码宽度超过了限制,所以就被换行了。 如果你不希望对象属性稍微多点就被换行,可以适当将 "prettier.printWidth" 这个配置改大写, 默认...

    eslint比较麻烦,和vscode默认配置也有出入。

    以下链接文章可以解决,不过有点小更新,不应该选择...,而是右上角的{}

    https://blog.csdn.net/userkang/article/details/84302629

     

    或者是作者另一篇文章:

    https://blog.csdn.net/userkang/article/details/84305689

    修改之后出现问题,

      const {
        page
      } = ctx.request.query
    
    const {
          title,
          image,
          alt,
          publisher,
          summary,
          price
        } = bookinfo

    看起来很费劲,对象的属性会分行显示

    经过参考文章的博主的耐心指点,现在搞明白了,因为我用mpvue,担心有影响,所以保留了一些代码,结果出了问题。参考文章评论就是了

      "[javascript]": {
            "editor.defaultFormatter": "vscode.typescript-language-features"
        }
     

    还有一些其他内容,摘录一部分

    如果你用的是 prettier 格式化,这个也不是对象属性就会自动换行,
    而是代码宽度超过了限制,所以就被换行了。 
    如果你不希望对象属性稍微多点就被换行,可以适当将 "prettier.printWidth" 这个配置改大写,
    默认应该是80, 我试了下 "prettier.printWidth": 120,你给的demo就不换行了。
     这样可以尽量避免换行。 如果一点都不希望换行,那就建议不要用 prettier 格式化了,
    可以把 js 的格式选为默认的。 这样就不会自动按属性换行了。 希望能帮到你。
    我理解 editor.wordWrapColumn 和 prettier.printWidth 是不一样的,
    wordWrapColumn 是视觉上的东西,也就是代码超过多少宽度就折行显示,但只是显示上的变化,
    它不会另起一行(行号增加)。
    而且需要editor.wordWrap配置wordWrapColumn时才会按照其设置的宽度生效。
    另外它是 vscode 自带的配置属性,具体说是其使用的编辑器引擎 monaco editor 提供的。
    而 printWidth 表示代码超过多少宽度就会被格式化,
    格式化会真的换行,同时它是 prettier 扩展提供的配置。
    所以我觉得他们应该是各有用途,不能互相替换哈。
    

    最后再次感谢参考文章博主userkang耐心指导

     

    2019年9月2日 19:20:55

    问题又重新出现。悲剧。

    反反复复查找,不知道怎么解决。

      success: res => {
                    console.log(
                      res,
                      'At j:\\work\\weixiyii\\proj\\rent_house\\xcx\\mpvue\\rent\\src\\pages\\register\\index.vue:Line 230):'
                    )
                  },

    最后,看来看去……

     "[javascript]": {
        "editor.defaultFormatter": "vscode.typescript-language-features"
      }

    把中括号里面的javascript改成vue,问题就解决了。

    看来不知其然的解决问题是有后患的。

    之前没有保存下来。

    现在保存了一份。

    不过意义不大.

    https://blog.csdn.net/userkang/article/details/84302629

    里面加上上面最后一段设置就是了。

     

    {
      "files.associations": {
        "*.cjson": "jsonc",
        "*.wxss": "css",
        "*.wxs": "javascript"
      },
      "emmet.includeLanguages": {
        "wxml": "html"
      },
      "minapp-vscode.disableAutoConfig": true,
      // tab 大小为2个空格
      "editor.tabSize": 2,
      // 100 列后换行
      "editor.wordWrapColumn": 130,
      // 保存时格式化
      "editor.formatOnSave": true,
      // 开启 vscode 文件路径导航
      "breadcrumbs.enabled": true,
      // prettier 设置语句末尾不加分号
      "prettier.semi": false,
      // prettier 设置强制单引号
      "prettier.singleQuote": true,
      // 选择 vue 文件中 template 的格式化工具
      "vetur.format.defaultFormatter.html": "prettyhtml",
      // 显示 markdown 中英文切换时产生的特殊字符
      "editor.renderControlCharacters": true,
      // 设置 eslint 保存时自动修复
      "eslint.autoFixOnSave": true,
      // eslint 检测文件类型
      "eslint.validate": [
        "javascript",
        "javascriptreact",
        {
          "language": "html",
          "autoFix": true
        },
        {
          "language": "vue",
          "autoFix": true
        }
      ],
      // vetur 的自定义设置
      "vetur.format.defaultFormatterOptions": {
        "prettier": {
          "singleQuote": true,
          "semi": false
        }
      },
      "[vue]": {
        "editor.defaultFormatter": "vscode.typescript-language-features"
      }
    }
    

     

    展开全文
  • 如下代码可以实现使用Java的POI进行Word文档的解析并生成XML格式文档功能

        如下代码可以实现使用Java的POI进行Word文档的解析并生成XML格式文档功能,此代码编译通过,但是运行有问题,读者可以亲自试试并能否改bug:


    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.io.Writer;
    import java.nio.charset.Charset;
    
    import org.apache.poi.hwpf.HWPFDocument;
    import org.apache.poi.hwpf.model.StyleDescription;
    import org.apache.poi.hwpf.model.StyleSheet;
    import org.apache.poi.hwpf.usermodel.CharacterRun;
    import org.apache.poi.hwpf.usermodel.Paragraph;
    import org.apache.poi.hwpf.usermodel.Range;
    
    public final class Word2Forrest {
    	Writer _out;
    	HWPFDocument _doc;
    
    	@SuppressWarnings("unused")
    	public Word2Forrest(HWPFDocument doc, OutputStream stream) throws IOException {
    		OutputStreamWriter out = new OutputStreamWriter(stream, Charset.forName("UTF-8"));
    		_out = out;
    		_doc = doc;
    
    		init();
    		openDocument();
    		openBody();
    
    		Range r = doc.getRange();
    		StyleSheet styleSheet = doc.getStyleSheet();
    
    		int sectionLevel = 0;
    		int lenParagraph = r.numParagraphs();
    		boolean inCode = false;
    		for (int x = 0; x < lenParagraph; x++) {
    			Paragraph p = r.getParagraph(x);
    
    			String text = p.text();
    			if (text.trim().length() == 0) {
    				continue;
    			}
    			StyleDescription paragraphStyle = styleSheet.getStyleDescription(p.getStyleIndex());
    			String styleName = paragraphStyle.getName();
    			if (styleName.startsWith("Heading")) {
    				if (inCode) {
    					closeSource();
    					inCode = false;
    				}
    
    				int headerLevel = Integer.parseInt(styleName.substring(8));
    				if (headerLevel > sectionLevel) {
    					openSection();
    				} else {
    					for (int y = 0; y < (sectionLevel - headerLevel) + 1; y++) {
    						closeSection();
    					}
    					openSection();
    				}
    				sectionLevel = headerLevel;
    				openTitle();
    				System.out.println("++++++" + p.text());
    				writePlainText(text);
    				closeTitle();
    			} else {
    				int cruns = p.numCharacterRuns();
    				CharacterRun run = p.getCharacterRun(0);
    				String fontName = run.getFontName();
    				if (fontName.startsWith("Courier")) {
    					if (!inCode) {
    						openSource();
    						inCode = true;
    					}
    					System.out.println("------" + p.text());
    					writePlainText(p.text());
    				} else {
    					if (inCode) {
    						inCode = false;
    						closeSource();
    					}
    					openParagraph();
    					System.out.println("******" + p.text());
    					writePlainText(p.text());
    					closeParagraph();
    				}
    			}
    		}
    		for (int x = 0; x < sectionLevel; x++) {
    			closeSection();
    		}
    		closeBody();
    		closeDocument();
    		_out.flush();
    
    	}
    
    	public void init() throws IOException {
    		_out.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
    		_out.write(
    				"<!DOCTYPE document PUBLIC \"-//APACHE//DTD Documentation V1.1//EN\" \"./dtd/document-v11.dtd\">\r\n");
    	}
    
    	public void openDocument() throws IOException {
    		_out.write("<document>\r\n");
    	}
    
    	public void closeDocument() throws IOException {
    		_out.write("</document>\r\n");
    	}
    
    	public void openBody() throws IOException {
    		_out.write("<body>\r\n");
    	}
    
    	public void closeBody() throws IOException {
    		_out.write("</body>\r\n");
    	}
    
    	public void openSection() throws IOException {
    		_out.write("<section>");
    
    	}
    
    	public void closeSection() throws IOException {
    		_out.write("</section>");
    
    	}
    
    	public void openTitle() throws IOException {
    		_out.write("<title>");
    	}
    
    	public void closeTitle() throws IOException {
    		_out.write("</title>");
    	}
    
    	public void writePlainText(String text) throws IOException {
    		_out.write(text);
    	}
    
    	public void openParagraph() throws IOException {
    		_out.write("<p>");
    	}
    
    	public void closeParagraph() throws IOException {
    		_out.write("</p>");
    	}
    
    	public void openSource() throws IOException {
    		_out.write("<source><![CDATA[");
    	}
    
    	public void closeSource() throws IOException {
    		_out.write("]]></source>");
    	}
    
    	public static void main(String[] args) throws IOException {
    		InputStream is = new FileInputStream("D:/QMDownload/hwpftest.doc");
    		OutputStream out = new FileOutputStream("D:/QMDownload/test.xml");
    		try {
    			new Word2Forrest(new HWPFDocument(is), out);
    		} finally {
    			out.close();
    			is.close();
    		}
    	}
    }


    展开全文
  • 功能描述: 批量提取指定Word文档(docx格式)中所有文本框中的文本。 测试文件: 参考代码: 执行结果:
  •  本例介绍如何让Word2007自动提取Excel成绩表中的数据批量制作成绩单,这个神奇的通知单自己会从Excel成绩表中提取学生的姓名、学号、各科成绩等等,然后按老师指定的格式自动制作全班同学的成绩通知单!...
  • Word文档转化为HTML格式文档

    千次阅读 2004-10-28 09:00:00
    Word文档转化为HTML格式文档作者:孟宪会 出自:【孟宪会之精彩世界】 发布日期:2004年5月24日 11点50分1秒 利用Word.Application提供的方法,可以很轻易地将Word文档转化为HTML等其它格式,下面就是实现的...
  • 文档格式化研究一

    千次阅读 2014-08-23 10:44:56
    其中主要是WORD格式文档,因此对WORD自动化作了一定研究(主要是按文档按编制标准进行各类样式的统一格式化,如字体,缩进、行距等)。 一开始首先想到的是VSTO,也通过其开发一个WORD插件,直接集成在WORD里面,...
  • 1)在word1中选中文字,按格式刷快捷键Ctrl+Shift+C 2)然后切换到word2里面,选中想要格式化的文字或段落,按"仅粘贴格式"的快捷键Ctrl+Shift+V
  • 项目中有时需要Word文档的导出/预览功能,使用Freemarker工具可以实现,文档的模板为WordXML格式,类似于html语言,不同标签含义不同,以下是经常用到的一些标签和注释: <w:body>//文档主体 <w:tbl...
  • Word文档中去除EndNote格式

    千次阅读 2020-08-22 11:26:17
    Word文档中去除EndNote格式全文格式去除局部格式去除 在使用endnote过程中,总有那么些时候是只需要endnote的文本,而不需要他的格式,以方便我们在实际情况中对文本的修改。关于去除endnote格式,本文暂且介绍两种...
  • 导出word文档——WordXML格式解析

    万次阅读 2015-11-14 15:08:38
    ${wordtext1}</w:t> ${wordtext1}是freemarker变量,一般是字符串,用于输出,这个可以参考freemarker文档 --> </w:r> </w:p> 段属性包含在<w:pPr></w:pPr>中,文本格式包含在<w:rPr></w:rPr...
  • 如何利用python批量修改和生成docx格式word文章 编程语言就是用来解决实际问题,python的代码精简度方便了我们对一个具体功能的实现。这两天用python批量修改word文档,熟练了字符串匹配查找和替换,下面提供以下...
  • 使用PHPWord生成word文档

    万次阅读 2018-10-09 13:06:46
    phpoffice的github:... 安装 我们使用Composer来安装PHPWord。 composer require phpoffice/phpword ...安装好phpword后,新建一个php文档,引入autoload.php。 require 'vendor/autoload.php'; 实例...
  • 使用VB对word文档进行格式调整

    千次阅读 2015-12-22 16:53:05
    word文档中,有时候会出现大量表格,在需要调整格式时,只能一个一个手动刷格式,这样不仅费时而且很费力。本人在写文档时,碰到这种情况,熬夜干活儿,太累。所以下定决心,抽点时间研究WORD中的宏编程。经过测试...
  • 样式(style)是 Word 中用于快速更改文本格式的功能。...例如,需要将别人传过来的多份 Word 文档进行整合、统一其格式时,他人文档中预设的样式可能会给排版造成混乱和不便。但是,如果一刀切地将其粘贴为纯
  •  * @Description:Word试卷文档模型解析  * @author <a href="mailto:thoslbt@163.com">Thos</a> 42 * @ClassName: WordToHtml 44 * @version V1.0  *  */ public class WordUtils {  /**  * 回车符ASCII码...
  • Python生成word文档(固定格式

    千次阅读 2020-03-10 12:24:54
    学习Python小记:人生苦短、我用Python ...需求:妹为甲骨文专业,其导师让在word文档中其整理6000个拓片,格式如下: 包括大量重复性工作:添加图片、标题、文档格式(需重复600次) 学习有关Python ...
  • [PYTHON]批量合并WORD文档,DOCX格式

    千次阅读 2019-05-30 11:21:02
    某些时候按照不同的要求需要导出单个的word文档,也有可能导出整个word文档。该脚本作为[PYTHON]使用python将Oracle数据库结构导出为定制的word文档的补充,可以直接合并成一个word文档,也可以按照自己的需求嵌入...
  • Word中有很多的格式设置,很多格式设置都会有一些标记,这些标记是隐藏的,在打印文档时是不会打印出来的,但是它们却起着结构化文档的大作用。如果你在编辑文档,不妨点击格式标记开关,看看都有哪些格式标记,如...
  • 在平时项目开发中,相信或多或少的都遇到过word导出的需求,这里整理一个比较全面的java word导出方法,希望可以跟大家一起交流学习。 创建word模板 1.1 新建一个word模板,并修改字段 1 2 浏览器下载 ...
  • 目录修订历史环境安装0.Python-docx新建文档1.Python-docx编辑已存在文档2.win32com将doc转为docx3.win32com操作word3.1 打开新的word文档并添加内容3.2 打开已存在word文档并添加内容3.3 转换word为pdf4.Python-...
  • 找了很多工具,其实都是乱七八糟的,没几个好用的,... ABC Amber PDF Converter ABC Amber PDF Converter 是一个能可以帮助你快速轻松的将PDF电子文档转换为HTML,RTF,TXT Ansi,TXT Unicode,DOC,MCW,WPS,SAM,RFT,W
  • Sub 批量格式设置() '此代码为指定文件夹中所有选取的WORD文件的进行格式设置 Dim MyDialog As FileDialog, vrtSelectedItem As Variant, Doc As Document ' On Error Resume Next '忽略错误 '定义一个文件夹...
  • VC++ Word文档 自动技术

    千次阅读 2011-03-17 14:34:00
    <br />VC++6.0向Word文件的指定位置上插入一张图片,需要用到nlineShapes类型的AddPicture方法。 在MSDN中,该方法的声明如下: ****************************************************************...
  • Python-docx 模块读写 Word 文档基础(三):读取文档文本信息、表格信息、段落格式、字体格式等前言:1、获取文档章节信息:2、获取段落文字信息:3、获取文字格式信息:4、获取文档中表格信息:结尾:【Python与...
  • php解析word,获得文档中的图片

    千次阅读 2018-07-09 15:14:14
    大体思路是先将word格式为doc的文档转化为docx,用预处理程序将文档中的公式转化为swf图片格式,将word转化为xml格式,在获得xml中的内容转化为json格式。   预备知识 1. 理解xml基础 xml是一种可扩展标记...
  • XML导出word文档

    千次阅读 2018-01-25 10:58:12
    最近做项目,需要导出word文档的报表,网上查询了一些资料,感觉用xml做这个相对比较简单,Word从2003开始支持XML格式,大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker...
  • 如何将PDF格式转换为WORD文档

    千次阅读 2010-01-27 18:49:00
    经常在PDF形式上看到有好的文件时,想把它拿出来,但是却是不行,所以我第一步就是找一下有没有可以到PDF格式WORD文档的转换,在网上找了一下,原来还真的有很多,今天我就把这些方法也传上来,不过我也发现一个问题,就是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,136
精华内容 35,254
关键字:

word格式化文档