首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

POI读取EXCEL进展sheet复制

2012-10-31 
POI读取EXCEL进行sheet复制/******************************************************************** * *

POI读取EXCEL进行sheet复制

/******************************************************************** * * (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());}}//枠線の設定sheetTo.setDisplayGridlines(false);//Excelのズーム設定sheetTo.setZoom(80, 100);//シートを戻る。return sheetTo;}}

?

热点排行