import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelTest { private static final String EXL_2003 = "C:\\Users\\Administrator\\Desktop\\sale2003.xls";
private static final String EXL_2007 = "C:\\Users\\Administrator\\Desktop\\sale2007.xlsx"; public static void main(String[] args){
try {
test(EXL_2003);
test(EXL_2007);
} catch (Exception e) {
System.out.println("请检查EXCEL文件及格式!!");
}
} private static void test(String file) throws Exception {
Workbook wb = null;
if (file.endsWith(".xlsx")) {//EXCEL2007
wb = new XSSFWorkbook(new FileInputStream(new File(file)));
}else if(file.endsWith(".xls")){//EXCEL97-2003
wb = new HSSFWorkbook(new FileInputStream(new File(file)));
}else{
throw new Exception("");
} if(wb.getNumberOfSheets() > 1){
wb.removeSheetAt(1);
} //单元格合并
CellRangeAddress region = null;
Sheet sheet1 = wb.getSheetAt(0);
Sheet sheet2 = wb.createSheet(sheet1.getSheetName() + "_副本");
for (int i = 0; i < sheet1.getNumMergedRegions(); i++) {
region = sheet1.getMergedRegion(i);
if ((region.getFirstColumn() >= sheet1.getFirstRowNum())
&& (region.getLastRow() <= sheet1.getLastRowNum())) {
sheet2.addMergedRegion(region);
}
} //复制内容
Row rowFrom = null;
Row rowTo = null;
Cell cellFrom = null;
Cell cellTo = null;
for (int i = sheet1.getFirstRowNum(); i < sheet1.getLastRowNum(); i++) {
rowFrom = sheet1.getRow(i);
if (null == rowFrom){
continue;
} rowTo = sheet2.createRow(i);
rowTo.setHeight(rowFrom.getHeight());
for (int j = 0; j < rowFrom.getLastCellNum(); j++) {
sheet2.setColumnWidth(j, sheet1.getColumnWidth(j));
if(null != sheet1.getColumnStyle(j)){
sheet2.setDefaultColumnStyle(j, sheet1.getColumnStyle(j));
} cellFrom = rowFrom.getCell(j);
if (null == cellFrom){
continue;
} cellTo = rowTo.createCell(j);
cellTo.setCellStyle(cellFrom.getCellStyle());
cellTo.setCellType(cellFrom.getCellType()); if(Cell.CELL_TYPE_STRING == cellFrom.getCellType()){
cellTo.setCellValue(cellFrom.getStringCellValue());
}else if(Cell.CELL_TYPE_NUMERIC == cellFrom.getCellType()){
cellTo.setCellValue(cellFrom.getNumericCellValue());
}
}
} sheet2.setDisplayGridlines(true);//
FileOutputStream fileOut = new FileOutputStream(file);
wb.write(fileOut);
fileOut.close(); System.out.println(file + " 复制sheet成功!");
} }

本人没装EXCEL2007以上版本,不知是否向上兼容

POI解析读写EXCEL,复制SHEET,兼容EXCEL93-2003,2007的更多相关文章

  1. java的poi技术写Excel的Sheet

    在这之前写过关于java读,写Excel的blog如下: Excel转Html java的poi技术读,写Excel[2003-2007,2010] java的poi技术读取Excel[2003-20 ...

  2. java 使用POI读写Excel文件(兼容2003、2007)

    package com.jadyer.demo; import java.io.File; import java.io.FileOutputStream; import java.io.IOExce ...

  3. 关于C#操作Excel,复制Sheet的记录

    1.先用了NPOI,去做,HSSFWorkbook 里面有一个Copy方法,但这个只支持office2003. 对应的XSSFWorkbook没有些方法. 而且这个这个方法对devexpress导出的 ...

  4. Apache POI 实现对 Excel 文件读写

    1. Apache POI 简介 Apache POI是Apache软件基金会的开放源码函式库. 提供API给Java应用程序对Microsoft Office格式档案读和写的功能. 老外起名字总是很 ...

  5. [转]POI读写Excel 修改

    [转]POI读写Excel 修改 一.Excel基础 二.HSSF概况 三.通过usermodel读取文件 四.通过usermodel写入文件 五.通过eventusermodel读取文件 六.HSS ...

  6. Excelbatis-一个将excel文件读入成实体列表、将实体列表解析成excel文件的ORM框架,简洁易于配置、可扩展性好

    欢迎使用Excelbatis! github地址:https://github.com/log4leo/Excelbatis Excelbatis的优点 和spring天然结合,易于接入 xsd支持, ...

  7. java读写excel文件( POI解析Excel)

    package com.zhx.base.utils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi ...

  8. C++读写EXCEL文件OLE,java读写excel文件POI 对比

    C++读写EXCEL文件方式比较 有些朋友问代码的问题,将OLE读写的代码分享在这个地方,大家请自己看.http://www.cnblogs.com/destim/p/5476915.html C++ ...

  9. Java读写Excel之POI超入门

    转自:http://rensanning.iteye.com/blog/1538591 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给J ...

随机推荐

  1. L The Digits String(没有写完,有空补)

    链接:https://ac.nowcoder.com/acm/contest/338/L来源:牛客网 Consider digits strings with length n, how many d ...

  2. P2469 [SDOI2010]星际竞速(费用流)

    P2469 [SDOI2010]星际竞速 最小路径覆盖问题 每个星球必须恰好去一次,而每次高速航行都是从一个星球到另一个星球. 那么高速航行的起点可以保证被去过 高速航行和空间跳跃可以是互相独立的 将 ...

  3. 基于Idea从零搭建一个最简单的vue项目

    一.需要了解的基本知识 node.js Node.js是一个Javascript运行环境(runtime),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装.N ...

  4. Springboot2.x整合SpringSecurity

    一.Spring Security是什么?有什么作用(核心作用)?以及如何阅读本篇文章 1.是什么 Spring Security是Spring家族的一个强大的安全框架,与Springboot整合的比 ...

  5. MySQL的安装及简单调优

    MySQL的安装及调优 1. 安装注意点 ubuntu18的安装方式 sudo apt-get update sudo apt-get install -y mysql-server mysql-cl ...

  6. CSS书写顺序提高可读性

    属性书写顺序 [建议] 同一 rule set 下的属性在书写时,应按功能进行分组,并以 Formatting Model(布局方式.位置) > Box Model(尺寸) > Typog ...

  7. vue之路由传参三种基本方式

    现有如下场景,点击父组件的li元素跳转到子组件中,并携带参数,便于子组件获取数据. 父组件中: <li v-for="article in articles" @click= ...

  8. hibernate 5原生sql查询测试学习代码

    基本查询 import java.util.List; import org.hibernate.SQLQuery; import org.hibernate.Session; import org. ...

  9. linux下清空文件内容

    在命令行下#cat /dev/null >listener.log

  10. MySQL入门常用命令

    使用本地 MySQL,系统 Ubuntu. mysql -u root -p 输入 root 用户的密码进入MySQL: mysql>