精华内容
下载资源
问答
  • word阅览
    2021-09-24 14:53:23

    废话不说,直接代码

    Jacob有官网,下载完了把dll放在system32下,jsoup就简单的一个jar包

    package com.xxx.util;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.OutputStreamWriter;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;
    
    import com.jacob.activeX.ActiveXComponent;
    import com.jacob.com.Dispatch;
    import com.jacob.com.Variant;
    
    /**
     * jsoup用来格式化html格式 jacob用来处理word和html相互转化,使用的是原生的office转化,转出的效果比较好
     */
    public class WordJacob {
    
    	// 8 代表word保存成html
    	private final int WORD_HTML = 8;
    
    	// 12 代表html保存成docx
    	private final int HTML_WORD = 12;
    
    	/*
    	 * // 1 代表html保存成doc private final int HTML_DOC = 1;
    	 */
    
    	/**
    	 * word保存路径
    	 */
    	private String wordPath;
    	/**
    	 * word文档名称,注意不要带文件后缀
    	 */
    	private String docName;
    
    	public WordJacob(String wordPath, String docName) {
    		this.wordPath = wordPath;
    		this.docName = docName;
    	}
    
    	public static void main(String[] args) throws Exception {
    		String wordPath = "D:/111/";
    		//这个content就是读取了一个html的文件
    		String content=ComFile.readTxtFile("d://report_sj_bn.html", "utf-8");
    		String docName = "333";
    		//把word阅览模式的头部添加到HTML代码
    		String html = WordJacob.setHead(content);
    		WordJacob word = new WordJacob(wordPath, docName);
    		//解析html代码
    		org.jsoup.nodes.Document document = Jsoup.parse(html);
    		//格式化HTML代码,并且把图片文件提取出来(图片文件以base64的格式存储)
    		word.convertReportHtml(document);
    		//写html文件
    		word.writehtml(document.toString());
    		//把HTML和files文件转格式化成word
    		word.htmlToWord();
    	}
    	
    	/**
    	 * WORD转HTML
    	 * 
    	 * @param docfile
    	 *            WORD文件全路径
    	 * @param htmlfile
    	 *            转换后HTML存放路径
    	 *            notes:需要将jacob.dll拷贝到windows/system32或者项目所在jre\bin目录下面(
    	 *            比如我的Eclipse正在用的Jre路径是D:\Java\jdk1.7.0_17\jre\bin)。
    	 * @param html
    	 *            html静态页面路径
    	 * @param wordFile
    	 *            要生成的word文档路径
    	 */
    	public void wordToHtml() throws Exception{
    		String docfile = wordPath + File.separator + docName + ".docx";
    		String htmlfile = wordPath + File.separator + docName + ".html";
    		// 启动word应用程序(Microsoft Office Word 2003)
    		ActiveXComponent app = new ActiveXComponent("Word.Application");
    		try {
    			// 设置word应用程序不可见
    			app.setProperty("Visible", new Variant(false));
    			// documents表示word程序的所有文档窗口,(word是多文档应用程序)
    			Dispatch docs = app.getProperty("Documents").toDispatch();
    			// 打开要转换的word文件
    			Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method,
    					new Object[] { docfile, new Variant(false), new Variant(true) }, new int[1]).toDispatch();
    			// 作为html格式保存到临时文件
    			Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] { htmlfile, new Variant(WORD_HTML) },
    					new int[1]);
    			// 关闭word文件
    			Dispatch.call(doc, "Close", new Variant(false));
    		} finally {
    			// 关闭word应用程序
    			app.invoke("Quit", new Variant[] {});
    		}
    	}
    
    	/**
    	 * 
    	 * JACOB方式
    	 * 
    	 * notes:需要将jacob.dll拷贝到windows/system32或者项目所在jre\bin目录下面(
    	 * 比如我的Eclipse正在用的Jre路径是D:\Java\jdk1.7.0_17\jre\bin)。
    	 * 
    	 * @param html
    	 *            html静态页面路径
    	 * 
    	 * @param wordFile
    	 *            要生成的word文档路径
    	 * 
    	 */
    
    	public void htmlToWord() throws Exception{
    		File wordFile = new File(wordPath + File.separator + docName + ".docx");
    		File htmlFile = new File(wordPath + File.separator + docName + ".html");
    		ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word
    		try {
    			app.setProperty("Visible", new Variant(false));
    			Dispatch wordDoc = app.getProperty("Documents").toDispatch();
    			wordDoc = Dispatch.invoke(wordDoc, "Add", Dispatch.Method, new Object[0], new int[1]).toDispatch();
    			Dispatch.invoke(app.getProperty("Selection").toDispatch(), "InsertFile", Dispatch.Method,
    					new Object[] { htmlFile.getAbsolutePath(), "", new Variant(false), new Variant(false), new Variant(false) },
    					new int[3]);
    			Dispatch.invoke(wordDoc, "SaveAs", Dispatch.Method, new Object[] { wordFile.getAbsolutePath(), new Variant(HTML_WORD) },
    					new int[1]);
    			Dispatch.call(wordDoc, "Close", new Variant(false));
    		} finally {
    			app.invoke("Quit", new Variant[] {});
    		}
    	}
    
    	/**
    	 * 格式化html
    	 * 
    	 * @param element
    	 * @param imgPath
    	 *            图片路径
    	 * @throws Exception
    	 */
    	public void convertReportHtml(Element element) throws Exception {
    		if (element.id().equals("customerImg")) {
    			element.remove();
    			return;
    		}
    
    		String tagName = element.tagName();
    		if (tagName.equals("table") && !"printTable".equals(element.id())) { // printTable
    																				// 是需求版本输出Word时,用于布局的表格,不应该显示边框
    			String style = element.attr("style");
    			style += "width: 100%; border:1px solid #CCC; border-collapse:collapse;";
    			element.attr("style", style);
    		} else if (tagName.equals("th") && !"printTable".equals(element.parent().parent().parent().id())) {
    			String style = element.attr("style");
    			style += " border:1px solid #CCC;";
    			element.attr("style", style);
    		} else if (tagName.equals("td") && !"printTable".equals(element.parent().parent().parent().id())) {
    			String style = element.attr("style");
    			style += " border:1px solid #EEE;";
    			element.attr("style", style);
    		} else if (tagName.equals("img")) {
    			String src = element.attr("src");
    			if (src.startsWith("data:")) {
    				// 此处用于生成图片文件
    				String imgName = ComStr.generateShortUuid() + ".png";
    				String newsrc = docName + ".files";
    				String base64Str = src.split(",")[1];// 只取出base64部分的字符串
    				saveWordImage(base64Str, imgName);
    				element.attr("src", newsrc +"/"+ imgName);
    			}
    			if (src.contains("svg") && src.contains("version")) {// 如果highchart图表,先删除掉
    				element.remove();
    				return;
    			}
    			element.appendText("");
    		} else if (tagName.equals("a")) {
    			String href = element.attr("href");
    			if (!href.startsWith("http")) {
    				element.attr("href", href);
    			}
    		} else if (tagName.equals("meta")) {
    			element.appendText("");
    		} else if (tagName.equals("o:p")) {
    			element.remove();
    		}
    
    		Elements elements = element.children();
    		if (elements.isEmpty()) {
    			return;
    		}
    
    		for (Element e : elements) {
    			convertReportHtml(e);
    		}
    	}
    
    	/**
    	 * 保存word图片文件
    	 * 
    	 * @throws Exception
    	 */
    	private void saveWordImage(String base64Str, String filename) throws Exception {
    		String path = wordPath + docName + ".files";
    		File f = ImageBase64Converter.convertBase64ToFile(base64Str, path, filename);
    		if (f == null) {
    			throw new Exception("保存word文档图片失败!");
    		}
    	}
    
    	/**
    	 * 增加一个头部,用来转成word打开的时候是页面视图
    	 * 
    	 * @param html
    	 * @return
    	 */
    	public static String setHead(String html) {
    		// 添加一部分代码,用于打开的时候默认是word视图
    		String head = "<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>";
    		head += "<html xmlns:v='urn:schemas-microsoft-com:vml' xmlns:o='urn:schemas-microsoft-com:office:office'";
    		head += "xmlns:w='urn:schemas-microsoft-com:office:word' xmlns:m='http://schemas.microsoft.com/office/2004/12/omml'";
    		head += "xmlns='http://www.w3.org/TR/REC-html40'><head>";
    		head += "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";
    		head += "<meta name=ProgId  content=Word.Document ><meta name=Generator  content='Microsoft Word 14' ><meta name=Originator  content='Microsoft Word 14' >";
    		head += "<!--[if gte mso 9]><xml><w:WordDocument><w:View>Print</w:View><w:TrackMoves>false</w:TrackMoves><w:TrackFormatting/><w:ValidateAgainstSchemas/><w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid><w:IgnoreMixedContent>false</w:IgnoreMixedContent><w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText><w:DoNotPromoteQF/><w:LidThemeOther>EN-US</w:LidThemeOther><w:LidThemeAsian>ZH-CN</w:LidThemeAsian><w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript><w:Compatibility><w:BreakWrappedTables/><w:SnapToGridInCell/><w:WrapTextWithPunct/><w:UseAsianBreakRules/><w:DontGrowAutofit/><w:SplitPgBreakAndParaMark/><w:DontVertAlignCellWithSp/><w:DontBreakConstrainedForcedTables/><w:DontVertAlignInTxbx/><w:Word11KerningPairs/><w:CachedColBalance/><w:UseFELayout/></w:Compatibility><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><m:mathPr><m:mathFont m:val='Cambria Math'/><m:brkBin m:val='before'/><m:brkBinSub m:val='--'/><m:smallFrac m:val='off'/><m:dispDef/><m:lMargin m:val='0'/> <m:rMargin m:val='0'/><m:defJc m:val='centerGroup'/><m:wrapIndent m:val='1440'/><m:intLim m:val='subSup'/><m:naryLim m:val='undOvr'/></m:mathPr></w:WordDocument></xml><![endif]-->";
    		head += html;
    		return head;
    	}
    
    
    	public void writehtml(String content) throws Exception {
    		FileOutputStream fos = null;
    		OutputStreamWriter osw = null;
    		try {
    			File f=new File(wordPath+docName+".html");
    			if (!f.getParentFile().exists()) {
    				f.getParentFile().mkdirs();
    			}
    			fos = new FileOutputStream(f);
    			osw = new OutputStreamWriter(fos, "utf-8");
    			osw.write(content);
    			osw.flush();
    		} finally {
    			if (osw != null) {
    				osw.close();
    			}
    			if (fos != null) {
    				fos.close();
    			}
    		}
    	}
    }
    

    操作成功的时候,会在文件夹下生成3个文件

    更多相关内容
  • 图书馆阅览室工作总结[Word版].doc
  • 2022年图书馆阅览室工作总结[Word稿].doc
  • Excel表格+Word文档各类各行业模板-企业内部刊物阅览管理.zip
  • Excel表格+Word文档各类各行业模板-视听阅览室多媒体资源目录表.zip
  • java 实现 word 文档的在线预览,资源包含代码和jar包,下载放入项目既可以使用
  • 图书阅览室工作计划.docx
  • 开架阅览管理书库论文.doc
  • 图书室、阅览室工作计划.doc
  • 高校图书馆电子阅览室探讨.doc
  • 高校电子阅览室软件维护综述.doc
  • 深究电子阅览室维护与管理.doc
  • 图书阅览室工作计划(57页).docx
  • 某学校图书室阅览室工作计划概述.docx
  • 某某学校图书室阅览室工作计划概述.doc
  • 【管理制度】图书馆、阅览室规则.docx
  • 在线预览word/excel/ppt

    2016-05-19 20:34:48
    Java实现在线预览word/excel/ppt,在网上找了很多的方式,有将word/excel/ppt转换为HTML的,还有转swf的,但是转swf的偏多,转HTML有些可是不好,转swf的效果好一些,但是在转excel的时候,默认是已A4的纸张来进行...
  • 言归正传,今天和大家分享的是Word分栏打印,这样既不会浪费纸张,更方便我们阅读。 当我们用Excel遇到行多列少的表格时,想要让数据排满整页,在excel中会比较麻烦,我们这里有个方法,可以把表格复制到word,然后...

    今天写的是办公小技巧的第四篇文章,后面我还会陆续更新更多小技巧和大家分享,如果你喜欢的话就关注我哦。言归正传,今天和大家分享的是Word分栏打印,这样既不会浪费纸张,更方便我们阅读。
    当我们用Excel遇到行多列少的表格时,想要让数据排满整页,在excel中会比较麻烦,我们这里有个方法,可以把表格复制到word,然后点击布局,在栏这里,选择三栏,空白部分就被表格排满了,那为了方便查看每一列的数据,我们还可以,在表格工具的布局中,点击重复标题行。在这里插入图片描述在这里插入图片描述在这里插入图片描述
    经过这样的设置后再打印不仅节约纸张,还非常方便阅读,喜欢的话记得关注哦。

    展开全文
  • java之jacob实现获取word文件的内容

    热门讨论 2011-04-21 17:04:00
    读取word文件的内容,并将内容返回为String类型!
  • Scientific Word

    2012-09-21 08:42:05
    Sciword(Scientific Word) 是一个全面支持LaTeX的软件, LaTeX是一种描述复杂文档的语言基于TeX系统。使用Scientific word,可以使用自然的数学表达式组成数学、...读者可以使用免费的ScientificViwer阅览及打印文件。
  • 本文主要介绍了Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件的具体实例。文章篇尾附上源码下载,有兴趣的朋友可以看下
  • 可见,有文章,有附件——word格式等,有pdf格式。 小程序支持阅览多种office格式文件 官方列出有:https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.openDocument.html doc doc 格式 ...

    我们用小程序与网站交互,那么无非是上传文件,发布文章,阅览文件(主要是office和pdf)和文章。

    服务端用engineercms,各种文件分类在网站上展示是这样的:

     可见,有文章,有附件——word格式等,有pdf格式。

    小程序支持阅览多种office格式文件

    官方列出有:https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.openDocument.html

    docdoc 格式 
    docxdocx 格式 
    xlsxls 格式 
    xlsxxlsx 格式 
    pptppt 格式 
    pptxpptx 格式 
    pdfpdf 格式

     所以就可以将服务端混排的各种附件和文章进行混排展示出来,如下图:

    当点击文件时,就跳转到文件阅览页,当点击文章时候,就跳转到文件详情页。 

    小程序列表 模板切换用官方下面的代码

    https://developers.weixin.qq.com/miniprogram/dev/reference/wxml/template.html

    <template name="odd">
      <view> odd </view>
    </template>
    <template name="even">
      <view> even </view>
    </template>
    
    <block wx:for="{{[1, 2, 3, 4, 5]}}">
      <template is="{{item % 2 == 0 ? 'even' : 'odd'}}"/>
    </block>

     各种文件扩展名用下面这个工具制作了图标:

    https://github.com/joaner/namedavatar

    小程序代码:

    js

    //直接查看各种文件
      downloadFile: function (e) {
        wx.showLoading({
          title: '加载中...',
        })
    
        var that = this;
        if (that.data.standardFocus) {
          that.setData({
            downloadurl: config.url + '/wx/wxstandardpdf/' + e.currentTarget.dataset.id,
          });
        } else {
          that.setData({
            downloadurl: config.url + '/wx/getwxpdf/' + e.currentTarget.dataset.id,
          });
        };
        var sessionId = wx.getStorageSync('sessionId')
        //发起网络请求
        wx.downloadFile({
          url: that.data.downloadurl + '?hotqinsessionid=' + sessionId,
          header: {
            "Content-Type": "application/x-www-form-urlencoded"
          },
          success: function (res) {
            console.log(res.tempFilePath)
            const filePath = res.tempFilePath //返回的文件临时地址,用于后面打开本地预览所用
            wx.openDocument({
              filePath: filePath,
              fileType: e.currentTarget.dataset.type,
              success: function (res) {
                console.log('打开成功');
                wx.hideLoading()
              },
              fail: function (res) {
                // console.log(res);
                wx.showToast({
                  title: res.data.info,
                  icon: 'loading',
                  duration: 1500
                })
              }
            })
          },
          fail: function (res) {
            console.log(res);
            wx.showToast({
              title: res.data.info,
              icon: 'loading',
              duration: 1500
            })
          },
        })
      },

     wxml

    <template name="msgTemp">
    		<view class="weui-panel__bd">
    			<!-- <navigator class="weui-media-box weui-media-box_appmsg" hover-class="weui-cell_active"> -->
    			<view class="weui-media-box weui-media-box_appmsg" hover-class="weui-cell_active">
    				<view class="weui-media-box__hd weui-media-box__hd_in-appmsg">
    					<image class="weui-media-box__thumb" src="{{Link}}" style="width: 60px; height: 60px;" style="border-radius: 100%" />
    					<!-- <wxc-avatar class="avatar">图</wxc-avatar> -->
    				</view>
    				<view class="weui-media-box__bd weui-media-box__bd_in-appmsg" data-id="{{Id}}" data-type="{{Type}}" catchtap='downloadFile'>
    					<view class="weui-media-box__title">{{Title}}</view>
    					<view class="weui-media-box__desc">{{tutil.formatTime(Created)}}</view>
    					<view class="weui-media-box__desc">{{LiNumber}}</view>
    				</view>
    				<navigator class="weui-media-box__desc" url="../pdfview/pdfview?id={{Id}}&title={{Title}}&actIndex={{ActIndex}}&link={{Link}}&type={{Type}}">分享</navigator>
    				<!-- </navigator> -->
    			</view>
    		</view>
    	</template>
    
    	<!--用name 定义模版-->
    	<template name="article">
    		<view class='leassonList' data-id="{{Id}}" bindtap="seeDetail">
    			<view class='listIn'>
    				<view class='leassonImg'>
    					<image src="{{Link}}" class='leassonImgs' mode='aspectFill' />
    					<!-- <image class="weui-media-box__thumb" src="{{Link}}" style="width: 60px; height: 60px;" style="border-radius: 100%" /> -->
    				</view>
    				<view class='leassonTitle'>
    					<view class='title'>
    						{{Title}}
    					</view>
    					<view class='author'>
    						作者:{{Author}}
    					</view>
    				</view>
    			</view>
    		</view>
    	</template>
    
    			<view wx:for-items="{{msgList}}" wx:key="{{item.id}}">
    				<view class="kind-list__item">
    					<!--用is 使用模版-->
    					<template is="{{item.Type=='isArticle'?'article':'msgTemp'}}" data="{{...item}}" />
    				</view>
    			</view>

    服务端engineercms返回数据为下所示:其中Link,当为文件时,用图标的base64,为文章时,用文章里的第一个图片。

    {
      "info": "SUCCESS",
      "searchers": [
        {
          "Id": 15,
          "Title": "珠三角工程模拟飞检设计整改报告和有关说明珠三角工程模拟飞检设计整改报告和有关说明.docx",
          "Type": "docx",
          "Link": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj48cmVjdCBmaWxsPSIjRkY1NzIyIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIj48L3JlY3Q+PHRleHQgZmlsbD0iI0ZGRiIgeD0iNTAlIiB5PSI1MCUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iNTAiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBhbGlnbm1lbnQtYmFzZWxpbmU9Im1pZGRsZSI+VzwvdGV4dD48L3N2Zz4=",
          "Subtext": "",
          "Author": "",
          "Created": "2020-06-25T11:54:41.4978218Z",
          "Updated": "2020-06-25T11:54:41.4978218Z"
        },
        {
          "Id": 19,
          "Title": "鲁班测试993",
          "Type": "isArticle",
          "Link": "http://127.0.0.1/attachment/LBGCB鲁班工程宝/质量监督/2020June/1593093898342607000.jpg",
          "Subtext": "asdfasdfsadf",
          "Author": "admin",
          "Created": "2020-03-18T14:37:33.5387154Z",
          "Updated": "2020-06-25T14:05:01.7747665Z"
        }
      ]
    }

    小程序上传各种文件:

     小程序上传文件js:

      //上传文件
      uploadPDF(e) {
        var that = this
        that.setData({
          uploadurl: config.url + '/admin/addwxattachment?pid=' + that.data.id,
        });
        wx.chooseMessageFile({
          count: 10,
          type: 'file',
          success(res) {
            const tempFilePaths = res.tempFiles
            if (tempFilePaths.length > 0) {
              wx.showLoading({
                title: '上传中...',
              })
              //循环比较
              for (var i = 0; i < tempFilePaths.length; i++) {
                var imgUrl = tempFilePaths[i].path;
                var filename = tempFilePaths[i].name;
                var sessionId = wx.getStorageSync('sessionId')
                //发起网络请求
                wx.uploadFile({
                  //上传图片的网路请求地址
                  url: that.data.uploadurl + '&hotqinsessionid=' + sessionId,
                  //选择
                  filePath: imgUrl,
                  name: 'file',
                  formData: {
                    'filename': filename
                  },
                  success: function (res) {
                    wx.hideLoading();
                    if (res.data.info != "err") {
                      wx.showToast({
                        title: "上传成功",
                        icon: "none",
                        duration: 1500
                      })
                      // 加跳转
                      wx.navigateBack({
                        delta: 1,
                        success: function (e) {
                          var page = getCurrentPages().pop();
                          if (page == undefined || page == null) return;
                          page.onLoad();
                        }
                      })
                    } else {
                      wx.showToast({
                        title: "上传失败",
                        icon: "none",
                        duration: 1500
                      })
                    }
                  },
                  fail: function (res) {
                    wx.hideLoading();
                    wx.showToast({
                      title: "文件上传失败",
                      icon: "none"
                    })
                  }
                });
              }
            }
          }
        })
      },

    当然,上传按钮必须要做2个,一个是上传文件,一个是发布文章哦。

    展开全文
  • 【Vue项目实践】实现在线预览word文件、excel文件

    千次阅读 热门讨论 2021-12-16 17:19:04
    使用import mammoth from "mammoth";import XLSX from "xlsx";实现页面预览word文件、excel文件
  • JS - 实现word预览功能

    千次阅读 2020-10-28 11:47:30
    实现word预览功能 XDOC文档预览云服务:http://view.xdocin.com/
  • vue展示word带目录
  • GoViewFile : ... ============ ... 目前已经完成 ============ ...Word、Excel、PPT转码为PDF PDF转码为图片 对Word,Excel,PPT和PDF的图片式在线预览 本地上传预览 ...
  • quicklook快速查看word,Excel,ppt方法

    千次阅读 2021-10-06 14:51:26
    使用quicklook查看office(word, excel, powerpoint)方法 前往开发者github地址 下载最新版本的插件(plugin),下载完成选中该文件用quicklook查看(空格敲击),按照提示进行安装。 重启quicklook down ...
  • PDF 方式一:a标签 ...通过jquery插件jquery.media.js实现,这个插件可以实现pdf预览功能(包括其他各种媒体文件)但是对word等类型的文件无能为力。 实现方式: html结构: <script type="text/javascrip

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,051
精华内容 420
热门标签
关键字:

word阅览