利用POI合并多个Excel表
利用POI进行多张Excel表的合并。附源代码。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 379 2012-03-31 09:53 POI_Excel_SheetJava_Demo.classpath
文件 784 2012-03-31 10:24 POI_Excel_SheetJava_Demo.myeclipseprofilerExcel_Sheet.xml
文件 385 2012-03-31 09:13 POI_Excel_SheetJava_Demo.project
文件 629 2012-03-31 09:14 POI_Excel_SheetJava_Demo.settingsorg.eclipse.jdt.core.prefs
文件 9299 2012-03-31 11:43 POI_Excel_SheetJava_Demoinclass_demoExcel_Sheet.class
文件 8491 2012-03-31 11:43 POI_Excel_SheetJava_Demosrcclass_demoExcel_Sheet.java
文件 1675036 2011-08-22 11:25 POI_Excel_Sheetpoi-3.7-20101029.jar
文件 16151 2012-03-31 15:24 POI_Excel_SheetPOI_Excel_Sheet.docx
目录 0 2012-03-31 15:25 POI_Excel_SheetJava_Demo.myeclipseprofiler
目录 0 2012-03-31 15:25 POI_Excel_SheetJava_Demoinclass_demo
目录 0 2012-03-31 15:25 POI_Excel_SheetJava_Demosrcclass_demo
目录 0 2012-03-31 15:25 POI_Excel_SheetJava_Demo.myeclipse
目录 0 2012-03-31 15:25 POI_Excel_SheetJava_Demo.settings
目录 0 2012-03-31 15:25 POI_Excel_SheetJava_Demoin
目录 0 2012-03-31 15:25 POI_Excel_SheetJava_Demosrc
目录 0 2012-03-31 15:25 POI_Excel_SheetJava_Demo
目录 0 2012-03-31 15:25 POI_Excel_Sheet
----------- --------- ---------- ----- ----
1711154 17
package class_demo;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellstyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
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;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
public class Excel_Sheet {
/*
* 示例,在d盘放两个示例Excel文件(单个Sheet)。
* 生成后会在D盘产生一个合并好Sheet的Excel文件。exlsample_2.xls
*/
public static void main(String[] args) {
try {
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(“d:\exlsample.xls“));
POIFSFileSystem fs_1 = new POIFSFileSystem(new FileInputStream(“d:\exlsample_1.xls“));
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFWorkbook wb_1 = new HSSFWorkbook(fs_1);
HSSFWorkbook wbt = new HSSFWorkbook();
// source target 为源sheet 页和目标sheet页
wbt = copyRows(wbwbt);
wbt = copyRows(wb_1wbt);
FileOutputStream fileOut = new FileOutputStream(“d:\exlsample_2.xls“);
wbt.write(fileOut);
fileOut.flush();
fileOut.close();
System.out.println(“生成完成!“);
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 对SHeet进行复制,将源Excle保存到目标Excle中
*/
public static HSSFWorkbook copyRows(HSSFWorkbook wb HSSFWorkbook pTargetWb ) {
int pStartRow = 0; //开始行
int pEndRow =0; //结束行
int pPosition = 0; //位置
String pSourceSheetName=““;
String pTargetSheetName =““;
HSSFRow sourceRow = null;
HSSFRow targetRow = null;
HSSFCell sourceCell = null;
HSSFCell targetCell = null;
HSSFSheet sourceSheet = null;
HSSFSheet targetSheet = null;
Region region = null;
int cType;
int i;
short j;
int targetRowFrom;
int targetRowTo;
if ((pStartRow == -1) || (pEndRow == -1)) {
return null;
}
pSourceSheetName = wb.getSheetName(0);
pTargetSheetName = pSourceSheetName;
int pTargetSheetNumber = pTargetWb.getNumberOfSheets()+1;
if(pTargetWb.getSheet(pTargetSheetName) !=null){
pTargetSheetName = pTargetSheetName+pTargetSheetNumber;
}
pTargetWb.createSheet(pTargetSheetName);
sourceSheet = wb.getSheet(pSourceSheetName);
targetSheet = pTargetWb.getSheet(pTargetSheetName);
pEndRow = sourceSheet.getPhysicalNumberOfRows();
// 拷贝合并的单元格
for (i = 0; i < sourceSheet.getNumMergedRegions(); i++) {
region = sourceSheet.getMergedRegionAt(i);
if ((region.getRowFrom() >= pStartRow)
&& (region.getRowTo() <= pEndRow)) {
targetRowFrom = region.getRowFrom() - pStartRow + pPosition;
targetRowTo = region.getRowTo() - pStartRow + pPosition;
region.setRowFrom(targetRowFrom);
region.setRowTo(targetRowTo);
targetSheet.addMergedRegion(region);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 379 2012-03-31 09:53 POI_Excel_SheetJava_Demo.classpath
文件 784 2012-03-31 10:24 POI_Excel_SheetJava_Demo.myeclipseprofilerExcel_Sheet.xm
文件 385 2012-03-31 09:13 POI_Excel_SheetJava_Demo.project
文件 629 2012-03-31 09:14 POI_Excel_SheetJava_Demo.settingsorg.eclipse.jdt.core.prefs
文件 9299 2012-03-31 11:43 POI_Excel_SheetJava_Demoinclass_demoExcel_Sheet.class
文件 8491 2012-03-31 11:43 POI_Excel_SheetJava_Demosrcclass_demoExcel_Sheet.java
文件 1675036 2011-08-22 11:25 POI_Excel_Sheetpoi-3.7-20101029.jar
文件 16151 2012-03-31 15:24 POI_Excel_SheetPOI_Excel_Sheet.docx
目录 0 2012-03-31 15:25 POI_Excel_SheetJava_Demo.myeclipseprofiler
目录 0 2012-03-31 15:25 POI_Excel_SheetJava_Demoinclass_demo
目录 0 2012-03-31 15:25 POI_Excel_SheetJava_Demosrcclass_demo
目录 0 2012-03-31 15:25 POI_Excel_SheetJava_Demo.myeclipse
目录 0 2012-03-31 15:25 POI_Excel_SheetJava_Demo.settings
目录 0 2012-03-31 15:25 POI_Excel_SheetJava_Demoin
目录 0 2012-03-31 15:25 POI_Excel_SheetJava_Demosrc
目录 0 2012-03-31 15:25 POI_Excel_SheetJava_Demo
目录 0 2012-03-31 15:25 POI_Excel_Sheet
----------- --------- ---------- ----- ----
1711154 17
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)