模板导出2

一:

package com.draven.demo.tool;



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.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.Calendar;  
import java.util.Date;  
import java.util.List;


import javax.servlet.http.HttpServletResponse;
  
import org.apache.poi.hssf.usermodel.HSSFCell;  
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.CellStyle;
import org.apache.poi.ss.usermodel.RichTextString;  
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.RegionUtil;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/** 
 * 共分为六部完成根据模板导出excel操作:
 
 * 第一步、设置excel模板路径(setSrcPath)
 
 * 第二步、设置要生成excel文件路径(setDesPath)
 
 * 第三步、设置模板中哪个Sheet列(setSheetName)
 
 * 第四步、获取所读取excel模板的对象(getSheet)
 
 * 第五步、设置数据(分为6种类型数据:setCellStrValue、setCellDateValue、setCellDoubleValue、setCellBoole、setCellCalendarValue、setCellRichTextStrValue)
 
 * 第六步、完成导出 (exportToNewFile)
 
 *  
 * @author Administrator 
 * 
 */  
public class ExcelUtil {  
    Workbook tempWorkBook = null;  
    Sheet tempSheet = null;  
    Row tempRow = null;  
    Cell tempCell = null;  
    
    InputStream inputstream = null;
    File file= null;
    OutputStream outputstream = null;
    //自动添加行起始点
    int num = 15;
       
    public void setStream(InputStream inputstream,OutputStream outputstream){
        this.inputstream = inputstream;
        this.outputstream = outputstream;
    }
    
    public void setUrl(String intString,String outString){
        File file= null;
        try {
            file = new File(outString); 
            if(!file.exists()){


                file.createNewFile();


                }
            this.outputstream = new FileOutputStream(file); 
            this.inputstream = new FileInputStream(intString);
        } catch (Exception e) {
            // TODO: handle exception
        }
    }
    
    public void createExcel() {  
            try {  
                // 获取模板  
                tempWorkBook = new XSSFWorkbook(inputstream);  
                // 获取模板sheet页  
                tempSheet = tempWorkBook.getSheetAt(0);  
                // 将数据写入excel  
                // 创建单元格样式对象   
                XSSFCellStyle xssfCellStyle = cellStyle();
                setCellEd(1,0,"niubb",xssfCellStyle);
                setCellEd(3, 1, "zhongguo", xssfCellStyle);


                int len = 6;
                for(int i=0;i                    
                    setCell(num+i,0,"i="+i,xssfCellStyle);
                    setCellEd(num+i,1,"i="+i,xssfCellStyle);
                    setCellEd(num+i,2,"i="+i,xssfCellStyle);
                    setCellEd(num+i,3,"i="+i,xssfCellStyle);
                    setCellEd(num+i,4,"i="+i,xssfCellStyle);
                    setCellEd(num+i,5,"i="+i,xssfCellStyle);


                }
                //在sheet里增加合并单元格  
                cellRangStyle(num+len+1,num+len+1,0,1);
                setCell(num+len+1,0,"Subtotal 小计",xssfCellStyle);
                setCellEd(num+len+1,1,"-",xssfCellStyle);
                setCellEd(num+len+1,2,"-",xssfCellStyle);
                setCellEd(num+len+1,3,"-",xssfCellStyle);
                setCellEd(num+len+1,4,"-",xssfCellStyle);
                setCellEd(num+len+1,5,"55",xssfCellStyle);
                //在sheet里增加合并单元格 
                cellRangStyle(num+len+2,num+len+2,0,1);
                setCell(num+len+2,0,"Discount 折扣",xssfCellStyle);
                setCellEd(num+len+2,1,"-",xssfCellStyle);
                setCellEd(num+len+2,2,"-",xssfCellStyle);
                setCellEd(num+len+2,3,"-",xssfCellStyle);
                setCellEd(num+len+2,4,"-",xssfCellStyle);
                setCellEd(num+len+2,5,"-",xssfCellStyle);
                //在sheet里增加合并单元格
                cellRangStyle(num+len+3,num+len+3,0,1);
                setCell(num+len+3,0,"OtherExpenses其他费用",xssfCellStyle);
                setCellEd(num+len+3,1,"-",xssfCellStyle);
                setCellEd(num+len+3,2,"-",xssfCellStyle);
                setCellEd(num+len+3,3,"-",xssfCellStyle);
                setCellEd(num+len+3,4,"-",xssfCellStyle);
                setCellEd(num+len+3,5,"-",xssfCellStyle);
                //在sheet里增加合并单元格 
                cellRangStyle(num+len+4,num+len+4,0,1);
                setCell(num+len+4,0,"Total合计",xssfCellStyle);
                setCellEd(num+len+4,1,"-",xssfCellStyle);
                setCellEd(num+len+4,2,"-",xssfCellStyle);
                setCellEd(num+len+4,3,"-",xssfCellStyle);
                setCellEd(num+len+4,4,"-",xssfCellStyle);
                setCellEd(num+len+4,5,"-",xssfCellStyle);
                //在sheet里增加合并单元格 
                cellRangStyle(num+len+5,num+len+6,0,0);
                cellRangStyle(num+len+5,num+len+6,1,5);
                setCell(num+len+5,0,"REMARKS备注",xssfCellStyle);
                setCellEd(num+len+5,1,"25555555555555555555555555555555555555555555555555555555",xssfCellStyle);


                // 将内容写入Excel  
                tempWorkBook.write(outputstream);  
            } catch (Exception e) {  
                e.printStackTrace();  
            } finally {  
                
            }  
      
        }  
    public XSSFCellStyle cellStyle(){
        // 创建单元格样式对象   
        XSSFCellStyle alignStyle = (XSSFCellStyle)tempWorkBook.createCellStyle();   
        alignStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);   
        alignStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
        alignStyle.setBorderBottom(CellStyle.BORDER_THIN);   
        alignStyle.setBorderTop(CellStyle.BORDER_THIN);   
        alignStyle.setBorderLeft(CellStyle.BORDER_THIN);   
        alignStyle.setBorderRight(CellStyle.BORDER_THIN); 
        return alignStyle;
    }
    
    public void setCell(int num1,int num2,String str,XSSFCellStyle alignStyle){
        tempRow = tempSheet.createRow(num1); 
        tempCell = tempRow.createCell(num2);  
        tempCell.setCellValue(str);
        tempCell.setCellStyle(alignStyle); 
    }
    public void setCellEd(int num1,int num2,String str,XSSFCellStyle alignStyle){
        tempRow = tempSheet.getRow(num1); 
        tempCell = tempRow.createCell(num2);  
        tempCell.setCellValue(str);
        tempCell.setCellStyle(alignStyle); 
    }
    
    public void cellRangStyle(int num1,int num2,int num3,int num4){
        CellRangeAddress cra=new CellRangeAddress(num1,num2,num3,num4);
        tempSheet.addMergedRegion(cra);  
        // 使用RegionUtil类为合并后的单元格添加边框  
        RegionUtil.setBorderBottom(1, cra, tempSheet,tempWorkBook); // 下边框  
        RegionUtil.setBorderLeft(1, cra, tempSheet,tempWorkBook); // 左边框  
        RegionUtil.setBorderRight(1, cra, tempSheet,tempWorkBook); // 有边框  
        RegionUtil.setBorderTop(1, cra, tempSheet,tempWorkBook); // 上边框 
    }

}


二:

package com.draven.demo.tool;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;




public class test {


    public static void main(String[] s) {
        ExcelUtil excelUtil = new ExcelUtil();


        excelUtil.setUrl("f:\\model0420.xlsx", "f:\\out0420.xlsx");
    //    excelUtil.setStream(inputstream, outputstream);
        excelUtil.createExcel();
    }
}

你可能感兴趣的:(Java)