java利用poi 读写(导入导出)word、excel(数组越界求解决办法)

Java语言利用POI读取excel文档,利用Freemarker建立word模板(带图片),excel每一行数据生成单个word文档,再利用POI合并成一个word文档 需求: 现有一个excel文档,该文档从第三行开始,每一行代表一个化石及其相关的登记资料,如图1,现在需要将每一行数据的内容,填写到对应的word文档中,并将入库照片编号对应的照片插入对应位置,如图2,最后要求不能生成单个的word文档,因为文档个数多了,不方便整理和打印,需要合并成一个或者多个; 图1: 图2: 实现思路: Java语言利用... 阅读详情


java 读写 word excel 简单的实例

需要的jar包有

poi-3.8-20120326.jar

poi-examples-3.8-20120326.jar

poi-excelant-3.8-20120326.jar

poi-ooxml-3.8-20120326.jar

poi-ooxml-schemas-3.8-20120326.jar

poi-scratchpad-3.8-20120326.jar


具体实例代码如下 :

import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.poifs.filesystem.DirectoryEntry;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

/**
 * 
 * @author Administrator
 *
 */
public class ExcelWord {

	static public void main(String[] args) throws Exception {
		// ------------在xls中写入数据-----即导出excel
		FileOutputStream fos = new FileOutputStream("e:\\text.xls");
		HSSFWorkbook wb = new HSSFWorkbook();
		//给sheet命名
		HSSFSheet s = wb.createSheet("第一个sheet");
//		wb.setSheetName(0, "first sheet");
		//第一行
		HSSFRow row = s.createRow((short)0);
		//第一行第一列
		HSSFCell cell = row.createCell((short) 0);
		HSSFRichTextString hts = new HSSFRichTextString("nihao你好啊啊");
		cell.setCellValue(hts);
		//第一行第二列
		cell = row.createCell((short) 1);
		HSSFRichTextString hts1 = new HSSFRichTextString("中国龙");
		cell.setCellValue(hts1);
		/////第二行
		HSSFRow row2 = s.createRow((short)1);
		//第二行第一列
		HSSFCell cell1 = row2.createCell((short) 0);
		HSSFRichTextString hts2 = new HSSFRichTextString("第二行数据1111");
		cell1.setCellValue(hts2);
		//第二行第二列
		cell1 = row2.createCell((short) 1);
		HSSFRichTextString hts3 = new HSSFRichTextString("第二列数据ddd");
		cell1.setCellValue(hts3);
		
		//写入excel 关闭流
		wb.write(fos);
		fos.flush();
		fos.close();
		
		
		
		// ------------从xls读出数据----即数据导入
		StringBuffer sb=new StringBuffer();
		wb = new HSSFWorkbook(new FileInputStream("e:\\text.xls"));
		//获得第一张sheet
		s = wb.getSheetAt(0);
		System.out.println("行数:"+s.getLastRowNum());
		//末行+1
		for(int i=s.getFirstRowNum();i<s.getLastRowNum()+1;i++){
			HSSFRow r = s.getRow(i);
			 // 处理空行  
            if(r == null){  
                continue ;  
            }
            System.out.println("列数:"+r.getLastCellNum());
            //末列
			for(int j=r.getFirstCellNum();j<r.getLastCellNum();j++){
				cell = r.getCell((short) j);
				// 处理空列  
                if(r.getCell(j) == null){  
                    continue ;  
                }  
                String content=r.getCell(j).toString(); 
//                System.out.println("第"+i+"行"+"第"+j+"列的值为:"+content);
                sb.append(content+"||");
//				if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
//					System.out.println(cell.getRichStringCellValue());
//				}
			}
			sb.append("\n");
		}
		System.out.println(sb.toString());
//		s = wb.getSheetAt(0);
//		HSSFRow r = s.getRow(0);
		
		
		
		
//		// ------------------在doc中写入----导出word
//
//		byte[] a = new String("用到的JAR包如下(可以直接到POI官网上下载也可以在文章的附件中下载):poi-3.9-20121203.jarpoi-ooxml-3.9-20121203.jarpoi-ooxml-schemas-3.9-20121203.jarxmlbeans-2.3.0.jar可能有冲突的JAR包,如果工程lib中存在,需要删除。").getBytes();
//		ByteArrayInputStream bs = new ByteArrayInputStream(a);
//		POIFSFileSystem fs = new POIFSFileSystem();
//		// /////////////////////////////////
//		DirectoryEntry directory = fs.getRoot();
//		DocumentEntry de = directory.createDocument("WordDocument", bs);
//		// 以上两句代码不能省略,否则输出的是乱码
//		fos = new FileOutputStream("e:\\text.doc");
//		fs.writeFilesystem(fos);
//		bs.close();
//		fos.flush();
//		fos.close();
		
		
		
		// ------------从doc读出数据--word数据导入
		FileInputStream in = new FileInputStream("e:\\text.doc");
		WordExtractor extractor = new WordExtractor(in);
		
		String text = extractor.getText().toString();
		// 对DOC文件进行提取
		System.out.println(text);
		in.close();
		
		
	}
}


遇到的问题:

poi 导出数据到word后,再读取该word文档中的数据会抛出数组越界异常,直接读取正常编辑的word文件没有抛错。希望大神指点一二。




使用Apache POI实现Java操作Office文件:从Excel、Word到PPT模板写入 Apache POI为Java开发者提供了强大的Office文件操作能力,无论是基础的数据写入,还是复杂的模板定制,都能通过灵活组合API实现。掌握POI的核心组件(XSSF/XWPF/XSLF)和元素定位技巧,可高效解决企业级开发中的文档自动化需求。延伸思考:结合POI-TL等工具可实现更复杂的Word模板引擎,而面对超大数据量Excel处理时,需合理选择HSSF(旧格式)、XSSF(新格式)或SXSSF(流式)方案。建议在实际项目中根据文件格式、数据量和功能复杂度选择最佳实现方式。 阅读详情

相关推荐

POI框架学习-导入导出案例+word转为PDF实现导出

目录 一 POI简介 二 行数限制 三 案例(导入和导出) 3.1 导入依赖 3.2 导入案例 3.3 导出案例(返回文件流方式) 3.4 导出案例(返回URL方式) 3.5 加载模板导出 一 POI简介 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。是目前较流行的导入导出excel框架。 官方网站:Apache...

ytyDaMoTou的博客 7661

POI 富文本RichTextString

1. 富文本RichTextString概述富文本unicode字符串可以将字体Font应用于字符串的任何部分:applyFont(int startIndex, int endIndex, Font font) applyFont(int startIndex, int endIndex, short fontIndex)2. HSSFRichTextString创建HSSFRichTextSt

李平安 1万+

Hutool - POI:让 Excel 与 Word 操作变得轻而易举

各位开发者们,在日常的 Java 开发工作里,处理 Excel 和 Word 文件是相当常见的需求。无论是从 Excel 里读取数据进行分析,还是将数据写入 Excel 生成报表,亦或是对 Word 文档进行内容编辑,传统的 Apache POI 库虽然功能强大,但使用起来往往比较复杂,代码量也不少。不过,有了 Hutool - POI 这个得力助手,一切都变得轻松起来了。它对 Apache POI 进行了封装,提供了简洁易用的 API,让我们可以更高效地操作 Excel 和 Word 文件。

十年磨一剑,java开发各种业务系统 2453

POI的HSSFRichTextString的使用简介

在使用Apache的POI库生成EXCEL文件时,经常会遇到这样的情况:使用不同的格式格式化某个的

kecise的专栏 2万+

完整可运行的poi读取dco或.docx 文件源码和jar包

完整可运行的poi读取dco或.docx 文件源码和jar包 import org.apache.poi.POIXMLDocument; import org.apache.poi.POIXMLTextExtractor; import org.apache.poi.hwpf.extractor.WordExtractor; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.xwpf.extractor.XWPFWordExtractor;

电力系统实时仿真技术:从硬件在环到主流平台实践

实时仿真是一种基于高性能计算硬件,在严格时间约束下模拟物理系统动态行为的关键技术。其核心原理在于通过硬实时计算,确保仿真步长内的模型求解与输出时间严格同步,从而构建高保真的虚拟测试环境。这项技术的核心价值在于为电力电子、新能源并网等复杂系统的研发提供了无风险的“数字沙盘”,能够安全地验证控制器逻辑、保护装置动作及系统稳定性。在工程实践中,硬件在环测试通过连接虚拟模型与真实硬件,形成了控制器硬件在环和功率硬件在环两大主流应用场景,广泛应用于设备研发、电网安全分析和人员培训。本文聚焦于电力系统领域,深入解析了实

weixin_30952479的博客 420

关于Java导入excel表格出现下标越界异常的解决方法(个人心得记录)

最近在做java批量导入时经常出现这个异常,先上图 根据这个数组下标越界异常百度上搜索结果一大堆,但没有适合自己的解决办法,只能是自己慢慢摸索了,不过终于被我找到适合自己的解决办法了,上图 图上画圈的地方是找到excel中有数据的最大列数,但是如果建表格的时候不注意,在超出其他列的地方输入了数据,那么就会报上面的越界异常,解决办法就是上面的画圈部分改成自己要导入的列数就可以了 ,比

填坑是一个过程 1万+

Windows7 64位系统PL2303驱动无法安装问题解决

问题描述:电脑安装的是Win7 64位的旗舰版,USB to RS232这种线很简单,对于笔记本如果要用串口,就不能少了它了。USB to RS232转换芯片种类繁多,常见的有ch340,0108,PL2303,FT232等,这里面FT232的应该价格是相对比较贵的,因为FTDI的芯片本身比较贵。由于买了一根PL2303芯片的USB to RS232转换线,于是插上后发现驱动无法安装,又是在设备管

suxiang198的博客 5808

springboot +excel导入整理及采坑日志

最近因项目需要,业务需要用到excel批量导入的功能,之后就开始了采坑,哈哈哈 废话少说,直接上代码: 导入包: <!-- Excel导入的jar包--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version

weixin_45647586的博客 675

Win11系统下Abaqus 2025子程序开发环境一站式配置指南

本文详细介绍了在Win11系统下配置Abaqus 2025子程序开发环境的完整流程,包括VS2022和Intel oneAPI的安装与优化,以及Abaqus 2025的目录规划与环境联调。通过避坑指南和实战案例,帮助用户高效完成开发环境配置,避免常见错误,提升工作效率。

weixin_28717431的博客 332

详解电路设计中的RC电路

​ 一、什么是RC电路 RC电路是指由电阻R和电容C组成的电路,它是脉冲产生和整形电路中常用到 的电路。 常见的RC充、放电电路、RC积分电路合RC微分电路接下来详细讲解。 二、RC充、放电电路 RC充、放电电路如下图所示,下面通过充电和放电两个过程来分析此电路。 ​RC充、放电电路图 (1)RC充电电路 RC充电电路图如下图(a)所示 RC充电电路图及充电曲线图 ​由上图分析: 将上图a中开关S置于“1”处,电源E开始通过电阻R对电容C充电,由于刚开始充电时电容两端没有..

IT xiaobai 4万+

SpringBoot实现Excel导入导出,性能爆表,用起来够优雅~

操作Excel实现导入导出是个非常常见的需求,之前介绍了一款非常好用的工具EasyPoi。有读者提出在数据量大的情况下,EasyPoi占用内存大,性能不够好。今天给大家推荐一款性能更好的Excel导入导出工具EasyExcel,希望对大家有所帮助!

macrozheng的专栏 4489

通过JLink下载实现工控MCU批量烧录实战案例

利用JLink下载工具实现高效稳定的工控MCU批量烧录,提升产线效率。案例详细解析了脚本配置与自动化流程,突出jlink下载的可靠性和可扩展性,适用于大规模嵌入式部署场景。

weixin_30205153的博客 811

java word 题目导入_Java导入导出Excel和Word

目的实现Excel/Word导入导出,分以下步骤导入上传文件解析Excel/Word里面的内容导出生成Excel/Word文件文件下载如何实现上传文件----------Commons FileUpload上传组件Excel/Word-------Apache POI----Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能...

weixin_32661683的博客 1362

Oracle EBS R12 AP模块发票导入接口实战:从SQL插入到API调用的完整流程

本文详细解析了Oracle EBS R12 AP模块发票导入接口的完整流程,从SQL插入到API调用的实战技巧。涵盖接口表设计、数据验证、双通道导入机制及错误诊断,特别分享官方文档未提及的高阶优化方案,助力企业实现财务数字化转型。

weixin_33728268的博客 475

告别眼疲劳!保姆级教程:给你的SecureCRT v8.7.2换上护眼高亮配色(附透明背景设置)

本文提供了一份详细的SecureCRT v8.7.2护眼高亮配色方案教程,帮助程序员缓解眼疲劳问题。通过科学调整配色方案、动态环境自适应设置以及字体渲染优化,显著提升终端使用的舒适度和工作效率。特别推荐Solarized Dark和One Dark Pro医学适配版配色方案,适合长时间编码工作。

weixin_42549496的博客 353

JAVA开发利用POI实现Excel与word文档的读写操作(word篇)

SpringBoot整合POI实现word文档的读写操作(2) 导入POM文件依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> &l...

温故而知新 1824

Autosar NvM配置-手动配置Nvblock及使用-基于ETAS软件

NVM作为存储协议栈中最顶层的模块,是必须要掌握的。目前项目基本使用MCU带的Dflash模块,使用Fee模拟eeprom。在项目前期阶段,应该充分讨论需要存储的内容,包括应用数据,诊断数据等,用以评估Dflash空间是否够用。本文基于ETAS软件介绍NVBlock配置生成NVM参数及使用。使用NVBlock配置生成,基本不用手写代码,还是比较方便的。对于Nv block的划分,建议将同时写的一类数据放到一个block中,因为block除了data以外,Fee还会增加一些header数据,占用不少内存。

赞的博客 1884

Java:Java的jar包之POI的简介、安装、使用方法(基于POI将Word、Excel、PPT转换为html)之详细攻略

Java:Java的jar包之POI的简介、安装、使用方法(基于POI的转换—Word、Excel、Ppt等转html)之详细攻略 POI的简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 1、基本功能 HSSF - 提供读写Microsoft Excel格式档案的功能。 XSSF - 提供读写MicrosoftExcelOOXML格式档案的功能。 HWPF - 提供读

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 8107

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Apache POI 读写 Word、PPT、Excel,Excel 中文列名与数字转换

目录 Apache POI 概述与下载 HSLF and XSLF 操作 PPT HSSF and XSSF 操作 Excel Apache POI 概述与下载 1、Apache POI 是用 Java 编写的免费开源跨平台的 Java API,提供对 Microsoft Office 格式文档读和写的功能。 2、web 开发中,有一个经典的功能,就是数据的导入导出,特别是数据的导出,......

蚩尤后裔-汪茂雄 4487

java excel转word表格_java利用poi生成/读取excel表格、生成word

1.引入jar包依赖org.apache.poipoi3.9org.apache.poipoi-ooxml3.8View Code2.编写代码测试1 packagetestweb;23 importjava.io.File;4 importjava.io.FileNotFoundException;5 importjava.io.FileOutputStream;6 importjava.io.I...

weixin_30834169的博客 2521

SpringBoot的POI(Word、Excel文档的读写)

SpringBoot的POI

qq_48578877的博客 1997

POI-JAVA读取excel生成word表格文档

通过每个单元格的宽度设置,间接放大宽度。 我的代码如下:   package sym_cpts.poi.docx; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.math.BigInteger; import

weixin_37529641的博客 1253

Javaweb中使用POI对Excel,word进行批量导入导出处理

首先对EXCEL或者Word处理我们要懂得使用原则: 之前使用过NPOI常见基本都是在.net或者C#中使用,感兴趣可以去了解一下,大致相同; 首先是导入操作: 1.我们要进行文件上传(需要使用jar包fileupload),那么我们需要对文件流进行一个保存,最后面我们只需要拿到一个特定的地址即可,所以我们文件上传过程中需要拿到的是,文件名称,文件流,如果设置其他标题内容也是可以拿到的; 2.保存好文件那么就需要对文件进行解析,所以需要包(POI),然后进行存储,存储过程中我们要对前端进行数据的显示,那么如

谢先生的日记 1476
上一篇: sqlserver 2005 数据库异机备份
下一篇: myeclipse中java文件头注释格式设置
prefectjava
博客等级 码龄16年 26粉丝 101原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

prefectjava

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值