利用Java操作Office2007成为可能

Java操作Office 2007:从读写到转换的全面指南 本文还有配套的精品资源,点击获取 简介:本文详细介绍如何使用Java语言操作Microsoft Office 2007格式的文档,包括读取、修改Word、Excel和PowerPoint文件。涵盖对Open XML的理解、使用Apache POI库和JODConverter工具,以及性能优化、异常处理、版本兼容性和安全性等实际开发要点。文章旨在提供一个全面的教程,帮助开发者... 阅读详情

利用Java操作Office2007成为可能

 

 

之前从来都没有想过使用Java来操作Office,今天在InfoQ中文站上逛悠了一圈,发现了一篇名为《用Java操作Office 2007》的译文,原文作者为:Ted Neward ,译者为:张立。

 

其中,有这样一段关键文字:

由于Office文档(主要是Word,Excel和PowerPoint)是存储在一个二进制格式文件中,在COM中被称为结构化存储格式, 是一个通过COM接口的层次化二进制格式。 对COM开发者(或者其他使用COM相关语言的开发者,如Visual Basic, Delphi 和C++/ATL)而言非常方便,但产生的文件对于那些不能“讲COM”的语言是无法访问的。有许许多多的应用程序都是为了让Java语言可以访问这些文件的内容;比如大家都知道Excel可以读取逗号分隔符文件(CSV),因此,Java应用程序相应将数据导出到Excel友好的格式时一般会选用CSV格式(或是其他丑陋的格式)。Word则是可以读取富文本格式(RTF)文件,而RTF标准是公开和有详细文档的。Office的后来者,Office 2003,引入了一个新的XML格式(WordML),Java开发者可以用它来读写Office文档,但是这些格式并没有很好的文档,Java开发者频繁的发现自己是通过试错法来进行WordML格式的学习。 各种各样的开源项目都参与进来想要解决这个问题,比如Apache的POI框架,可以用来读写Excel文档,还有各种各样的Java-COM解决方案,这些解决方案一般倾向于使用和Office自己使用的结构化存储应用程序接口相同的应用程序接口进行Excel文档的读写,但很难满足需要,直到现在,开发者不得不指出Office文档格式的内部结构是一个非常复杂的结构,另外一点毋庸置疑的是它是一个没有完整文档的结构。 总体上来说,如果温和一点说的话,Java/Office的故事是一个非常讨厌的境况。对于Java的开发人员而言,他们要么一边嘴里说着“Office这种破东西怎么还会有人想去用它”一边用记忆里的伊索寓言来安慰自己,要么干脆告诉那些使用Office的客户由于Microsoft和Sun两家公司之间的诉讼,Java不能操作Office。 对于Office 2007来说,微软毫无疑问的迈出了解决这些问题的一大步。没有比原始的JDK更复杂的东西---也就是说并不要求使用一些第三方的库---Java应用程序现在可以读写任何Office 2007的文档,这是由于Office 2007文档现在使用的是XML文档的ZIP格式文件。 这种格式被称作“OpenMXL”规范并且已经被提交到欧洲计算机制造商协会(ECMA),这个协会同样拥有C#语言和CLI运行时规范,所有的OpenXML规范现在都可以被任何人自由的从ECMA的网站下载。 除了这些,再安装好Office 2007(为了验证和作一些测试)和一个标准的Java6 JDK安装,Java现在可以打开任何的Office 2007文档,找出来文档中间的内容,操作它们,并且再次保存这些数据。

 

 

“.docx”文件是OpenXML格式的,微软的文档中声称该格式是XML文档的ZIP压缩格式文件,这些文件中包含了文档中的数据和格式,存储的方式与之前的Office版本中的二进制结构化存储应用程序接口存储数据的方式有些类似。如果这是真的,那么使用Java中提供的用来处理ZIP和TAR格式的“jar”实用工具应该可以展示这些内容,而事实上,它的确可以……在命令提示符中运行:“jar tvf Hello.docx” 即可查看到Word2007的文档结构内容。

 下面是我的测试结果:

 

一、首先使用MS Word 2007字处理软件新建一个“.docx”文档,并在文档内录入一段简要文字信息并保存退出。

 

 

 演示在MS Word2007 中添加简要文字信息

 

 

二、打开命令提示符工具(运行cmd.exe),并转到第一步中Word2007文档的存档路径,在命令窗口中输入jar tvf Hello.docx并回车,即可看到如图效果:

 

演示如何使用JDK的Jar命令查看MS Word 2007的文档结构(OpenXML)

 

 

三、实质上,使用7-Zip解压工具可以更直观地看到和提取详细的文档内容。

 

演示使用7-Zip提取MS Word2007文档结构

 

演示使用7-Zip提取MS Word 2007文档结构(OpenXML)

 

 

四、打开word/document.xml文档,内容格式很紧凑,我稍稍整理了一下,可以看到Hello.docx文档的文字信息均包含在些XML文档中。

 

 

 

可以看到,这样的一个XML文档,用Java便很容易处理了。

 

如果不使用三方jar库,JDK中自带的类库也可以处理XML文档。所以,在你的Java代码中大致需要包含以下几个package:

 

 

 

呵呵!原来只听说过通过COM访问Office,没想到短短的几年,还可以这样通过XML技术操作Office,有意思!

 

 

 

                                                                                            By CodingMouse

                                                                                            2009年04月09日

 

Android平台Office 2007文档处理实战 本文还有配套的精品资源,点击获取 简介:在Android应用中处理Office 2007文档,如.docx、.xlsx和.pptx,涉及理解文件的Open XML标准和ZIP格式。文章介绍了如何解压、解析ZIP和XML文件,处理文本、图像、图表和表格,以及利用第三方库简化操作。本教程详细讲述了整个读取和展示流程,考虑到了性能优化和用户体验。 1. Office 2... 阅读详情

相关推荐

用Java操作Office 2007

code 博文链接:https://ghost-fly.iteye.com/blog/216034

导出Word遇到的坑及解决方法(二)!

当你遇到多选框的时候,要求你要在方框中打上对勾!你会怎么处理?? 部分代码如下:这只是后端的代码,这样写还是不能进行正确的打上对勾。。还需要。。。。。 //企业规模 String qygm = vo.getQygm(); if (qygm != null) { if (qygm.equals("1")) { dataMap.put("QYGM1", "☑"); dataMap.p

u011271164的博客 1555

ZYNQ Linux下UIO中断配置避坑实录:从设备树修改到用户层测试(Vivado 2018.2)

本文详细解析了ZYNQ Linux下UIO中断配置的全流程,从设备树修改到用户层测试,特别针对Vivado 2018.2环境中的常见陷阱提供解决方案。内容涵盖中断号配置规则、用户空间中断处理程序编写以及性能优化技巧,帮助开发者高效实现硬件中断的用户空间控制。

weixin_31854867的博客 333

java使用poi读写word中的公式(三)

文章目录前置博文准备工作XML分析读取公式写入公式 前置博文 请先阅读前期博文以便更好理解本篇博文 java使用poi读取word(一) java使用poi读写word中的图片(二) 准备工作 需要安装一个第三方公式插件建 AxMath官网 MathType中文官网(国内某公司代理) XML分析 先来分析一下xml 正常文本: <w:r> 标签对应一个XWPFRun对象 &l...

圣诞节G的博客 2万+

基于Plecs的LLC谐振变换器闭环设计:从PI参数整定到动态响应优化

本文详细介绍了在Plecs仿真环境中,如何为半桥LLC谐振变换器设计并优化闭环控制系统。从开环模型搭建与特性分析入手,重点阐述了基于频域法的PI控制器参数整定流程,并通过负载阶跃、输入电压突变等测试优化动态响应。文章还分享了从仿真模型过渡到实际硬件时的关键注意事项,帮助工程师实现稳定、高效的电源设计。

e4f5g6h的博客 623

GD32F103程序烧录全攻略:从SWD到串口的实战指南

本文提供了GD32F103微控制器程序烧录的全面实战指南,详细介绍了SWD、JTAG和串口(ISP)三种主流下载方式。文章重点解析了在Keil MDK中使用ST-Link进行SWD下载的完整步骤,包括硬件连接、软件配置和Flash算法设置,并针对烧录过程中的常见问题提供了实用的排坑解决方案,帮助开发者高效完成程序部署。

weixin_29191669的博客 435

JAVA用POI读取和创建2003和2007版本Excel完美示例

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.DecimalFormat; import jav

3万+

新手必看:5分钟搞懂FFT波束形成的底层原理(从阵列信号到频域处理)

本文深入浅出地解析了FFT波束形成的底层原理,从阵列信号采集到频域处理的全过程。通过音乐节场景类比和Python代码示例,帮助新手快速理解多目标波束形成的核心技术,包括频域转换、相位补偿和性能优化策略,适用于雷达、声呐和5G通信等领域。

pytorchlight8的博客 948

Java操作office 2007文档

我们希望将Office 2007平台作为一个构建富客户端应用程序的基本平台,并通过不同的手段使用Java来进行互操作。 但是,有一个Office/Java互操作的方面没有考虑到,那就是使Office和Java共同工作,也就是说让Java应用程序来操作Office文 档:比如创建文档,编辑文档,收集数据等等。 从以往看来,这其中经常会出现一些问题,这是由于Office文档(主要是Word,Exce...

312

ZooKeeper 实战:使用 Docker Compose 部署 ZooKeeper 集群

ZooKeeper是一个开源的分布式协调服务,用于管理大型分布式系统中的数据。它由Apache软件基金会提供,最初是Hadoop的一个子项目,但后来发展成为一个独立的顶级项目。ZooKeeper提供的一致性协调服务对于构建分布式应用和服务非常重要,特别是在需要精确的领导选举、配置管理、命名服务、分布式同步和提供分布式锁等功能时。

SmartSi 1541

Rockchip eMMC寿命监控:SMART信息读取与预防性维护

擦写计数坏块数量温度使用时间。

小灰灰的博客 761

InfoQ: 用Java操作Office 2007

用Java操作Office 2007作者 Ted Neward译者 张立 发布于 2007年9月20日 上午12时41分 在上一篇“Office富客户端应用”中,我们提到了将Office 2007平台作为一个构建富客户端应用程序的基本平台,并通过不同的手段使用Java来进行互操作。 但是,有一个Office/Java互操作的方面没有考虑到,那就是使Office和

smartcat86的专栏 5560

【系统架构设计师】案例分析考点情况分析和解题技巧(包括2009~2024年考点详情)

复习方法建议仍然是以真题为主,只不过和综合题不同,标准答案并不会涵盖所有可能的考点。案例的考察方法和论文不太一样,它考察两大块的内容:

数据知道的博客 1万+

Office文件格式突变,促使Java和Office更完美集成

Office是大家非常熟悉的办公软件。它的强大的文字和表格的处理能力几乎无人能敌。而其中的Excel除了被应用在传统的表格处理中,也常被广大程序员“抓”来充当报表系统的前端。如我们使用的Java Web程序,在后台生成一个带报表数据的Excel文件,然后将这个文件送到前台浏览器(必须是IE),这样这个Excel文件就可以嵌入到IE中。  这样处理报表既可以利用Excel强大的表格处理功能,

dongliheng的专栏 1927

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

java excel 2007兼容包_office2007兼容包

office2007兼容包是由微软官方推出的Microsoft Office 2007文件格式扩展包。office2007兼容包能够向Microsoft Office 2007中增加Word 2007的docx、Excel 的xlsx等一些全新的文件格式,使用户之间浏览文档时效率更高。office2007兼容包功能介绍在装有Microsoft Office 2000、Office XP或Offic...

weixin_42425824的博客 796

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

java excel 2007兼容包_Office2007兼容包

offic2007兼容包是微软推出的Microsoft Office 2007中增加了一些全新的文件格式,比如:Word 2007的docx、Excel 的xlsx。它不仅程序界面有了革命性的改变,Office文档的默认保存格式也发生了变化,在旧版的Office文档文件的扩展名后增加了一个X,您安装Office2007文件格式兼容包之后不安装Office2007也可以查看Office2007的文档...

weixin_42129005的博客 492

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 利用Java反射机制+泛型重新封装的BaseDao
下一篇: 今天实现了一个较实用的Pojo(实体)基类
CodingMouse
博客等级 码龄19年 82粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值