读取xlsx文件的内容输入到xls文件中
package com.cn.peitest.excel; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TreeMap; import org.apache.poi.hssf.usermodel.HSSFCell;
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.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class XlsxToXlsxTransformUtil { /*
*
*
* 读取xlsx文件的内容输入到xls文件中
*
* */ public static void main(String[] args) throws IOException { //输入xlse格式
POIFSFileSystem fs = null;//文件输入流
XSSFWorkbook xwb = null;//设置工作簿
XSSFSheet xsheet = null;//设置表单
XSSFRow xrow = null;//获得行
XSSFCell xcell = null;//行列单元格的值
//输出xls格式
XSSFWorkbook hwb = new XSSFWorkbook();
XSSFSheet hsheet =null;// wb.createSheet("sheet1");
XSSFRow hrow = null;//sheet.createRow(0);
XSSFCell hcell=null;//row0.createCell(0);
//cell0.setCellValue("0000"); SimpleDateFormat df = new SimpleDateFormat("yyyy_MM_dd_HH_mm");//设置日期格式
System.out.println(df.format(new Date()));// new Date()为获取当前系统时间 File inf=new File("C:\\Users\\pei\\Desktop\\新建 XLS 工作表.xls");
File ouf=new File("C:\\Users\\pei\\Desktop\\HYD test 1_0_2 tm="+df.format(new Date())+".xlsx"); boolean sheetflag=true;
int sheetid=0; boolean rowflag=true;
int rowid =0;
try {
FileInputStream fis = new FileInputStream(inf);//文件输入流
xwb=new XSSFWorkbook(fis);//设置工作簿
System.out.println("表单数="+xwb.getNumberOfSheets());//获取工作表单数目
while(sheetflag){
if(sheetid==xwb.getNumberOfSheets()){break;}
xsheet=xwb.getSheetAt(sheetid);//设置从第几个表单开始读取
if(xsheet==null){
sheetflag=false;
}else{
hsheet=hwb.createSheet(xsheet.getSheetName());//新的工作簿创建工作表单数
sheetid++;
rowid=0;
rowflag=true;
while(rowflag){
hrow=hsheet.createRow(rowid);//新的工作簿表单创建行数
xrow=xsheet.getRow(rowid);//xlsx获得行
if(xrow==null){
rowflag=false;
}else{
rowid++;
for(int c=0;c<30;c++){ xcell=xrow.getCell(c);//xlsx获得行列的内容
if(xcell!=null&&xcell.toString().length()>0){
String a1=xcell.toString().replaceAll(".00", "");//.00替换为空字符串
String a2=a1.replaceAll(".0", "");//.0替换为空字符串
String data=a2.replaceAll("O", "0");//o替换为0
hrow.createCell(c).setCellValue(data);//hrow.createCell(c)创建行列单元格,.setCellValue(data)调用xls的方法将内容写入单元格
}
}
}
}
}
} //FileOutputStream output=new FileOutputStream(ouf);
//xwb.write(output);
//System.out.println("导出结束");
//output.close();
} catch (Exception e) {
e.printStackTrace();
}
finally{
System.out.println("处理结束。。。。等待导出完成");
FileOutputStream output=new FileOutputStream(ouf);
hwb.write(output);
System.out.println("导出结束");
output.close();
} } }
读取xlsx文件的内容输入到xls文件中的更多相关文章
- 通过java 来实现对多个文件的内容合并到一个文件中
现在有多个txt文本文件,需要把这么多个文件的内容都放到一个文件中去 以下是实现代码 package com.SBgong.test; import java.io.*; public class F ...
- 文件下载Controller,文件夹内容监听,文件上传,运行程序通过url实现文件下载
文件下载Controller @RequestMapping("/fileDownLoad") public ResponseEntity<byte[]> fileDo ...
- poi excel文件上传并解析xls文件
1.jsp页面 <form action="hw/pe_xls_upload" method="post" enctype="multipart ...
- 用DataGridView导入TXT文件,并导出为XLS文件
使用 DataGridView 控件,可以显示和编辑来自多种不同类型的数据源的表格数据.也可以导出.txt,.xls等格式的文件.今天我们就先介绍一下用DataGridView把导入txt文件,导出x ...
- Windows 下自动同步文件夹内容到另一个文件夹下
实现windows 使用bat脚本文件,复制文件夹到另一个盘,参考如下代码:/y是可以不显示:提示你需要覆盖一个文件,如下图: bat文件内容为 @echo off echo "使用bat脚 ...
- linux下复制一个文件的内容到另一个文件
cat path/to/file/filename1 >> path/to/file/filename2 例如: cat id_rsa.pub >> ~/.ssh/author ...
- 使用Java中的IO流,把A文件里的内容输入到B文件中
我们先创建两个文本文件,out.txt和in.txt,在out.txt中输入"Hello World",然后使用FileInputStream把字符串读取出来,再使用FileOut ...
- 【linux】复制文件夹内容到另一个文件夹
我一直觉得cp是个非常简单的指令.结果居然遇到坑了.记录一下. 文件夹1:test1/ 文件夹2:test2/ 目标:将test1/中的所有文件和目录拷贝到test2/中 正确指令: cp -rf t ...
- shell脚本复制文件夹内容到另外的文件夹,如果存在则自动备份
有时我们需要将一个文件夹覆盖到我们的工作目录,但需要自动备份已经存在的文件,一个一个去备份太麻烦了,全部备份又没有必要.shell脚本可以很好滴完成这个任务.原文链接http://back.zhizh ...
随机推荐
- http 文件上传
参考https://www.cnblogs.com/yuwei0911/p/8601542.html
- 更改ubuntu的分辨率
乘号使用xyz的x打出来
- Jmeter测试Websocket接口
前言 websocket是什么? WebSocket 协议在2008年诞生,2011年成为国际标准.所有浏览器都已经支持了. 它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器 ...
- 给你一个亿的keys,Redis如何统计?
前言 不知你大规模的用过Redis吗?还是仅仅作为缓存的工具了?在Redis中使用最多的就是集合了,举个例子,如下场景: 签到系统中,一天对应一系列的用户签到记录. 电商系统中,一个商品对应一系列的评 ...
- Mac MySQL 8.0 (免安装版) 主从集群搭建
一.下载解压包 打开 MySQL 官网地址:https://dev.mysql.com/downloads/mysql/ ,选择面安装版本. 二.解压文件 下载到合适文件夹,解压压缩包. 解压 mys ...
- ccpc赛前记
距离ccpc比赛还不到一个小时了,有些紧张又有些兴奋 作为留学选手参加国内的比赛感觉好像很奇怪?谁能想到一个疫情会让我拿ccpc结束自己的acm生涯(也许,谁知道呢) cf上蓝了 该准备gre了,目标 ...
- 洛谷 P3410 拍照(最大流 + 建图)
这道题问的是一群人要和另一群人合影,每个客人都有必须在场的人全部在场才能在场,每个客人给的有收入,但是邀请也需要支出,问最大收入? 我觉得可以总结为一类问题,就是有先决条件的网络流问题.看到费用和支出 ...
- 区块链学习1:Merkle树(默克尔树)和Merkle根
☞ ░ 前往老猿Python博文目录 ░ 一.简介 默克尔树(Merkle tree,MT)又翻译为梅克尔树,是一种哈希二叉树,树的根就是Merkle根. 关于Merkle树老猿推荐大家阅读<M ...
- 第8.5节 Python类中的__new__方法和构造方法__init__关系深入剖析:执行顺序及参数关系案例详解
上节介绍了__new__()方法这个比构造方法还重要的方法的语法,本节通过案例来详细剖析__new__()方法的细节以及它与构造方法之间的关系. 一. 案例说明 本节以圆Cir类为例来说明,为了 ...
- Microsoft工具之Disk2vhd
Official documents:https://docs.microsoft.com/zh-cn/sysinternals/downloads/disk2vhd 1.Introduction D ...