POI读取EXCEL进行sheet复制
Java代码
/********************************************************************
*
* (C) Copyright ISFnet Japan, Ltd. 2011 All rights reserved.
*
********************************************************************/
package excel;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.util.CellRangeAddress;
/**
* <p>
*
* @author ISFnet DALIAN muzongqin
* @since 2011/08/10
* @version 1.0
*/
public class CopyExcel {
/**
*
*
*
* @param args
* void
* @throws IOException
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
// テンプレートとなるExcelファイルのパスを取得します。
final String INVOICE_FILE = "C:\\work\\jyuchu\\仕様書\\出力帳票\\修正済【完成】3_派遣労働者通知書.xls";
// ファイルを読み込みます。
POIFSFileSystem filein = new POIFSFileSystem(new FileInputStream(INVOICE_FILE));
// ワークブックを読み込みます。
HSSFWorkbook wb = new HSSFWorkbook(filein);
// シートを読み込みます。
HSSFSheet sheet1 = wb.getSheet("派遣労働者通知書");
HSSFSheet sheet2 = wb.createSheet("派遣労働者通知書1");
sheet2 = copySheet(sheet1, sheet2);
FileOutputStream fileOut = new FileOutputStream("d:\\test1.xls");
wb.write(fileOut);
fileOut.close();
}
private static HSSFSheet copySheet(HSSFSheet sheetFrom, HSSFSheet sheetTo) {
// 初期化
CellRangeAddress region = null;
Row rowFrom = null;
Row rowTo = null;
Cell cellFrom = null;
Cell cellTo = null;
//セル結合のコピー
for (int i = 0; i < sheetFrom.getNumMergedRegions(); i++) {
region = sheetFrom.getMergedRegion(i);
if ((region.getFirstColumn() >= sheetFrom.getFirstRowNum())
&& (region.getLastRow() <= sheetFrom.getLastRowNum())) {
sheetTo.addMergedRegion(region);
}
}
//セルのコピー
for (int intRow = sheetFrom.getFirstRowNum(); intRow < sheetFrom.getLastRowNum(); intRow++) {
rowFrom = sheetFrom.getRow(intRow);
rowTo = sheetTo.createRow(intRow);
if (null == rowFrom)
continue;
rowTo.setHeight(rowFrom.getHeight());
for (int intCol = 0; intCol < rowFrom.getLastCellNum(); intCol++) {
//セル幅のコピー
sheetTo.setDefaultColumnStyle(intCol, sheetFrom.getColumnStyle(intCol));
sheetTo.setColumnWidth(intCol, sheetFrom.getColumnWidth(intCol));
cellFrom = rowFrom.getCell(intCol);
cellTo = rowTo.createCell(intCol);
if (null == cellFrom)
continue;
//セルスタイルとタイプのコピー
cellTo.setCellStyle(cellFrom.getCellStyle());
cellTo.setCellType(cellFrom.getCellType());
//タイトル内容のコピー
if (null != cellFrom.getStringCellValue() && !"".equals(cellFrom.getStringCellValue().trim()))
cellTo.setCellValue(cellFrom.getStringCellValue());
&nbs
补充:软件开发 , Java ,