多个excel合并到一个excel中

多个Excel要把他们合并到一个Excel里面,涉及是Excel的读取和Sheet的合并。
package com.redbaby.test;

package com.redbaby.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.NumberFormat;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
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;


public class b {
public static void main(String[] args) throws FileNotFoundException{
String[] file = new String[]{"C:\\sample.xls","C:\\sample2.xls"};
FileInputStream in = null;
FileOutputStream out = new FileOutputStream("C:\\sample3.xls");
HSSFWorkbook workbook = null;
HSSFWorkbook wb = new HSSFWorkbook();

try {
for(int k = 0; k<file.length;k++){
in = new FileInputStream(new File(file[k]));
workbook = new HSSFWorkbook(new POIFSFileSystem(in));
// 根据读出的Excel,创建Sheet
HSSFSheet sheet = wb.createSheet();
//读取sheet
HSSFSheet childSheet1 = workbook.getSheetAt(0);
for(int i = 0;i<=childSheet1.getLastRowNum();i++){
HSSFRow r = sheet.createRow(i);
HSSFRow row = childSheet1.getRow(i);
// 判断是否为空,因为可能出现空行的情况
if(null!=row){
//循环读取列
for(int j = 0; j<row.getLastCellNum();j++){
// 根据读取的列,创建列
HSSFCell c = r.createCell((short) j);
HSSFCell cell = row.getCell(j);
// 将值赋给单元格
String value = "";
if(null!=cell){
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC:
if (HSSFDateUtil.isCellDateFormatted(cell)) {
// 如果是Date类型则 ,获取该Cell的Date值
value = HSSFDateUtil.getJavaDate(
cell.getNumericCellValue())
.toString();
} else {// 纯数字,这里要判断是否为小数的情况,因为整数在写入时会被加上小数点
String t = cell.getNumericCellValue()
+ "";
BigDecimal n = new BigDecimal(cell
.getNumericCellValue());
// 判断是否有小数点
if (t.indexOf(".") < 0) {
value = n.intValue() + "";
} else {
// 数字格式化对象
NumberFormat nf = NumberFormat
.getInstance();
// 小数点最大两位
nf.setMaximumFractionDigits(2);
// 执行格式化
value = nf.format(n.doubleValue());
}
}
break;
case HSSFCell.CELL_TYPE_STRING: // 字符串型
value = cell.getRichStringCellValue()
.toString();
break;
case HSSFCell.CELL_TYPE_FORMULA:// 公式型
// 读公式计算值
value = String.valueOf(cell
.getNumericCellValue());
break;
case HSSFCell.CELL_TYPE_BOOLEAN:// 布尔
value = " " + cell.getBooleanCellValue();
break;
/* 此行表示该单元格值为空 */
case HSSFCell.CELL_TYPE_BLANK: // 空值
value = " ";
break;
case HSSFCell.CELL_TYPE_ERROR: // 故障
value = " ";
break;

default:
value = cell.getRichStringCellValue().toString();
}
}else{
value = "";
}
c.setCellValue(value);
}
}
}
wb.write(out);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值