java 实现 excel sheet 拷贝到另一个Excel文件中 poi
public class CopyExcelSheetToAnotherExcelSheet {
public static void main(String[] args) throws FileNotFoundException, IOException {
String fromPath = "D:\\share\\jiemu_new\\";// excel存放路径
String toPath = "c:\\ok\\";// 保存新EXCEL路径
// 新的excel 文件名
String excelName = "节目访问量";
// 创建新的excel
HSSFWorkbook wbCreat = new HSSFWorkbook();
File file = new File(fromPath);
for (File excel : file.listFiles()) {
// 打开已有的excel
String strExcelPath = fromPath + "\\" + excel.getName();
InputStream in = new FileInputStream(strExcelPath);
HSSFWorkbook wb = new HSSFWorkbook(in);
for (int ii = 0; ii < wb.getNumberOfSheets(); ii++) {
HSSFSheet sheet = wb.getSheetAt(ii);
HSSFSheet sheetCreat = wbCreat.createSheet(sheet.getSheetName());
// 复制源表中的合并单元格
MergerRegion(sheetCreat, sheet);
int firstRow = sheet.getFirstRowNum();
int lastRow = sheet.getLastRowNum();
for (int i = firstRow; i <= lastRow; i++) {
// 创建新建excel Sheet的行
HSSFRow rowCreat = sheetCreat.createRow(i);
// 取得源有excel Sheet的行
HSSFRow row = sheet.getRow(i);
// 单元格式样
int firstCell = row.getFirstCellNum();
int lastCell = row.getLastCellNum();
for (int j = firstCell; j < lastCell; j++) {
// 自动适应列宽 貌似不起作用
//sheetCreat.autoSizeColumn(j);
System.out.println(row.getCell(j));
rowCreat.createCell(j);
String strVal ="";
if (row.getCell(j)==null) {
}else{
strVal = removeInternalBlank(row.getCell(j).getStringCellValue());
}
rowCreat.getCell(j).setCellValue(strVal);
}
}
}
}
FileOutputStream fileOut = new FileOutputStream(toPath + excelName + ".xls");
wbCreat.write(fileOut);
fileOut.close();
}
/**
* 复制原有sheet的合并单元格到新创建的sheet
*
* @param sheetCreat
* 新创建sheet
* @param sheet
* 原有的sheet
*/
private static void MergerRegion(HSSFSheet sheetCreat, HSSFSheet sheet) {
int sheetMergerCount = sheet.getNumMergedRegions();
for (int i = 0; i < sheetMergerCount; i++) {
Region mergedRegionAt = sheet.getMergedRegionAt(i);
sheetCreat.addMergedRegion(mergedRegionAt);
}
}
/**
* 去除字符串内部空格
*/
public static String removeInternalBlank(String s) {
// System.out.println("bb:" + s);
Pattern p = Pattern.compile("\\s*|\t|\r|\n");
Matcher m = p.matcher(s);
char str[] = s.toCharArray();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < str.length; i++) {
if (str[i] == ' ') {
sb.append(' ');
} else {
break;
}
}
String after = m.replaceAll("");
return sb.toString() + after;
}
}
java 实现 excel sheet 拷贝到另一个Excel文件中 poi的更多相关文章
- java:利用java的输入/输出流将一个文件的每一行+行号复制到一个新文件中去
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- 如何调用另一个python文件中的代码
模块的搜索路径 模块的搜索路径都放在了sys.path列表中,如果缺省的sys.path中没有含有自己的模块或包的路径,可以动态的加入(sys.path.apend)即可.下面是sys.path在Wi ...
- 怎样将多个CSS文件导入一个CSS文件中
问题: 在HTML中引入css的其中的两个方法: 导入式和链接式的目的都是将一个独立的css文件引入一个文件中,二者的区别不大,事实上,二者最大的区别在于链接式使用html的标记引入外部css文 ...
- 在VS中让一个JS文件智能提示另一个JS文件中的成员
“在VS中如何让一个JS文件智能提示另一个JS文件中的成员” 有时候会有这种情况:当我的一个Web页面引用了两个JS文件(假如分别叫common.js和JScript1.js),如果JScript1. ...
- 多个.txt文件合并到一个.txt文件中
如果想要将多个.txt文件合并到一个.txt文件中,可以先将所有.txt文件放到一个文件夹中,然后使用.bat文件完成任务. 例如,在一个文件夹下有1.txt, 2.txt, 3.txt三个文件,想把 ...
- shell如何传递变量到另一个脚本文件中
http://www.jbxue.com/article/shell/20707.html本文介绍了shell脚本传递变量到另一个脚本文件中的方法,在脚本中调用另一脚本,即创建了一个子进程,感兴趣的朋 ...
- java 将一张图片拷贝到另外一个地方。(IO流)
package com.beiwo.inputstream; import java.io.FileInputStream; import java.io.FileOutputStream; impo ...
- 如何将一个Excel文件中的sheet移动到另外一个Excel?
背景 工作中往往会有多个excel维护的情况,随着业务的变化, 将一个Excel合并到另外一个Excel,成为必须. 如何移动sheet,对于不会的人,这是一个好问题, 也许你经过多次尝试都没有成功. ...
- python excel操作 练习:#生成一个excel文件,生成3个sheet,每个sheet的a1写一下sheet的名称。每个sheet有个底色
练习:#生成一个excel文件,生成3个sheet,每个sheet的a1写一下sheet的名称.每个sheet有个底色 #coding=utf-8 from openpyxl import Workb ...
随机推荐
- VijosP1100:加分二叉树
描述 设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号.每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都有一 ...
- 最小化安装linux CentOS-6.6后 部署fastdfs +下载地址 很干很干的干货
参考:http://blog.itpub.net/7734666/viewspace-1292485/ 安装一些必要软件 yum -y install wget gcc perl mkdir ~/zy ...
- 利用URL重写隐藏复杂的URL
第一步:模拟映射页面 我们想在一个页面上点击guid.html链接,跳转到比较复杂URL的guid_{492f3e0b-848e-11da-9550-00e08161165f}.html页面.即定义一 ...
- Ajax.BeginForm 的使用
@using (Ajax.BeginForm("AddHomeRule", "MyHome", new AjaxOptions { HttpMethod = & ...
- 数据库路由中间件MyCat - 源代码篇(13)
此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 4.配置模块 4.2 schema.xml 接上一篇,接下来载入每个schema的配置(也就是每个MyCat ...
- PHP正则表达式,看这一篇就够啦!
前言 不知道你们有没有这个感觉,看正则表达式就像看天文数字一样,什么电话号码.邮箱的正则表达式,上网复制一下粘贴下来就搞定了.完全不知道这写的是什么玩意.后来我自己也想学一下,因为感觉用处还是挺大的. ...
- Git 时光穿梭鸡 删除文件 以及批量删除文件
先添加一个新文件test.txt到Git并且提交: 一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm命令删了 $ rm test.txt 这个时候,Git知道你删除了文件, 因此,工作 ...
- Jsoncpp写“鱘”的json数据,报错。
最近在用Json::FastWriter生成json数据时,发现一个问题.含有“鱘”字的json字段会多出一个斜杠,不知道是不是编码的问题. C++要使用JSON来解析数据,一般采用jsoncpp. ...
- 51nod1101(dp)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1101 题意:中文题诶- 思路:dp 我们用dp[i][j]存 ...
- pytest框架(一)
代码示例一 # coding=utf-8 def func(x): return x + 1 def test_answer(): assert func(3) == 5 运行结果 E:\pyYouY ...