package com.liujicheng;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
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.hssf.util.Region;
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;
}
}
- 大小: 12.7 KB
分享到:
相关推荐
Java poi复制execl的sheet页,跨文件操作,数据和样式全部复制,工具类
/* 建立第二个sheet对象*/ HSSFSheet sheet2 = wb.createSheet("明细页面"); //建立新的sheet对象 for (int i = 0; i ; i++) { HSSFRow row2 = sheet2.createRow((short)i); HSSFCell cell2 = row2....
java实现excel的导入导出(poi详解),经过测试poi效率要比jxl要高很多,特别是数据量大的时候jxl根本无法用肉眼入目,本资源是个可运行项目demo,很有参考价值!
java_poi实现excel导入导出功能,有详细的注解
将多个EXCEL文件,每个文件多个sheet,合并为:一个excel多sheet,每个sheet是源excel中多sheet合并,希望可以帮到有需要的朋友
a).将数据库中的数据导入excel(2003版.xls)中 b).每个sheet中有数据50000条记录,如果sheet中的记录数>50000,则在新建sheet中导入数据,并且每个sheet都从第一行开始 c).前后台代码都有哦
JAVA POI Excel转Html,代码和所需的jar都在压缩包,项目在线预览需求,实现后分享下
java实现Excel导入
Java实现Excel读写的poi 5.2.1版本jar
poi实现sheet页的复制(包含原有样式)和根据sheet表格中的空行来拆分单元格生成excel到指定路径的功能
基于反射的Excel操作工具类,可以灵活设置表头以及内容,可根据数据类型匹配成POJO,支持正则表达式等
使用poi方式导出excel,支持将多个工作簿合成一个Excel进行导出
Java用poi读取excel文件Java用poi读取excel文件Java用poi读取excel文件
Java POI根据模板生成Excel文件并写入磁盘,资源文件仅为实现的简单测试Demo,并没有进行代码优化,可以直接导入运行,资源文件仅供参考。
Java使用poi实现excel导入导出,导入导出已做成通用方法,内附说明文档
Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出Java POI EXCEL导入导出
poi 将多个excel复制到新的excel 的多个sheet页中 并复制所有的样式 包括字体的样式 背景颜色 单元格宽度 等
用poi读取excel多个sheet内容,用流的方式判断excel的版本,2003,还是2007版本,并附带所需jar包,文件下载后解压,直接导入eclipse中即可使用
Java 操作Excel poi读写excel,所需要的jar包 https://blog.csdn.net/u014646662/article/details/83217382
不要再使用从copysheet、copyrow、copyStyle的方式复制sheet页了。明明可以几行代码搞定的事情。。在easyexcel-test模块下WriteTest类中。1、readAndWriteSheetPOI。2、readAndWriteSheet 这两个方法中。