poi导出excel,支持合并的单元格
来源:互联网 发布:biu是什么意思网络语言 编辑:程序博客网 时间:2024/04/28 01:06
poi导出excel
支持合并的单元格
/** * */package ctsi.pf.business.exportToExcel;import com.eos.system.annotation.Bizlet;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.math.BigDecimal;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Arrays;import java.util.Date;import java.util.Iterator;import java.util.List;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRichTextString;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.usermodel.HSSFCellStyle;import org.apache.poi.hssf.util.Region;import com.eos.data.xpath.XPathLocator;import com.eos.foundation.common.io.FileUtil;import com.eos.foundation.eoscommon.ConfigurationUtil;import com.eos.runtime.core.ApplicationContext;import com.eos.system.annotation.Bizlet;import com.eos.system.annotation.BizletParam;import com.eos.system.annotation.ParamType;import commonj.sdo.DataObject;/** * @author majie * @date 2012-11-13 13:44:55 * */@Bizlet("")public class OrderExportToExcel {/** * @param args * @author majie * @throws IOException */private static HSSFCellStyle cellStyleTXT;private static HSSFCellStyle cellStyleData;private static DataObject[] exportObjects;private static HSSFSheet sheetFirst;private static HSSFSheet sheetSecond;@Bizlet("测试")public static void exportToExcel(DataObject[] exportObjectsIn) throws IOException{exportObjects=exportObjectsIn;//文件名String filename="test1";if(filename.indexOf(".xls")==-1){filename+=".xls";}//输出目录String tempDir="c:/"+"temp/";File file=new File(tempDir);if(!file.exists()){//创建临时目录FileUtil.mkDir(tempDir);//file.createNewFile();}//生成完整文件名+路径String outputFile=tempDir+generateOutputExcelFile(filename); // 声明一个工作薄 HSSFWorkbook workbook = new HSSFWorkbook(); // 生成两个sheet HSSFSheet sheet1 = workbook.createSheet("订单基本信息"); HSSFSheet sheet2 = workbook.createSheet("订单内容信息"); sheetFirst=sheet1; sheetSecond=sheet2; sheet1.setColumnWidth((short)0,(short)4000); sheet1.setColumnWidth((short)1,(short)8000); sheet1.setColumnWidth((short)2,(short)4000); sheet1.setColumnWidth((short)3,(short)8000); //生成sheet1左边文字样式HSSFCellStyle StyleTXT=workbook.createCellStyle();StyleTXT.setAlignment(HSSFCellStyle.ALIGN_RIGHT);StyleTXT.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);StyleTXT.setBorderBottom(HSSFCellStyle.BORDER_THIN); StyleTXT.setBorderLeft(HSSFCellStyle.BORDER_THIN); StyleTXT.setBorderRight(HSSFCellStyle.BORDER_THIN); StyleTXT.setBorderTop(HSSFCellStyle.BORDER_THIN); cellStyleTXT=StyleTXT;//生成sheet1数据样式HSSFCellStyle StyleData=workbook.createCellStyle();StyleData.setAlignment(HSSFCellStyle.ALIGN_LEFT);StyleData.setVerticalAlignment(HSSFCellStyle.VERTICAL_TOP);StyleData.setBorderBottom(HSSFCellStyle.BORDER_THIN); StyleData.setBorderLeft(HSSFCellStyle.BORDER_THIN); StyleData.setBorderRight(HSSFCellStyle.BORDER_THIN); StyleData.setBorderTop(HSSFCellStyle.BORDER_THIN);cellStyleData=StyleData;//System.out.println("233"); int startRow=0; //设置行数列数 int column=4,row=13; String[][] datasImportFormat={ {"定单流水号:","#_formCode","单据类型:","#_orderProcessType"}, {"合同编号:","#_contractCode","单据类型:","#_acceptType"}, {"受理运营商:","#_acceptCompany","受理部门:","#_businessCreateAreaName"}, {"受理类型:","#_busiAcceptType","申请时间:","#_applyDate2"}, {"申请人:","#_applyPerson2","发起地客户经理:","#_initiateCustomerManager"}, {"发起地业务经理:","#_initiateBusinessManager","集团国际业务支撑经理:","#_groupInterBusinessManager"}, {"海外公司业务经理:","#_abroadBusinessManager","集团业务经理:","#_groupBusinessManager"}, {"付费方式:","#_orderFeetype","付费客户:","#_payCustomerNo"}, {"付费客户名称:","#_payCustomerName","客户名称:","#_consumerName"}, {"客户编号:","#_consumerId","客户联系人:","#_consumerPerson"}, {"联系电话:","#_consumerTel","客户地址:","#_consumerAddr"}, {"Email:","#_consumerEmail","账户名称:","#_null"}, {"备注","$_MR3$#_orderNote"} }; //格式说明: $_MR3$ 合并3个单元格(合并多少个就写多少个数字) //#_加实体的字段名 //如果为字串则直接写入 //计算总元素数 int count=0; for(int i=0;i<row;i++) count+=datasImportFormat[i].length; // System.out.println(datasImportFormat.length+""); for(int i=0;i<row;i++){ HSSFRow rowData=sheet1.createRow(startRow++); rowData.setHeight((short) 800); for(int j=0;j<column;j++){ //写入单元格 if((count--)>0) creatCell(rowData,j,datasImportFormat[i][j],sheet1); } } //生成excel文件 FileOutputStream fileOut = new FileOutputStream(outputFile); workbook.write(fileOut); fileOut.close(); }/** * 生成单元格,套用格式 * @param HSSFRow row,int cellIndex,String strIn,HSSFSheet sheet * @return */private static void creatCell(HSSFRow row,int cellIndex,String strIn,HSSFSheet sheet){HSSFCell cell=row.createCell((short)cellIndex); Object str;int MergedRegionNum=0;//合并单元格的数量//处理合并的单元格if(strIn.startsWith("$_MR")){int nextStart=strIn.indexOf("$", 3);MergedRegionNum=Integer.parseInt(strIn.substring(4,nextStart));strIn=strIn.substring(nextStart+1);sheet.addMergedRegion(new Region(row.getRowNum(),(short)cellIndex,row.getRowNum(),(short)(cellIndex+MergedRegionNum-1)));}//处理格式if(strIn.startsWith("#_")){str=XPathLocator.newInstance().getValue(exportObjects[0],strIn.substring(2));cell.setCellStyle(cellStyleData);if(MergedRegionNum>1){for(int i=1;i<MergedRegionNum;i++){row.createCell((short)(i+cellIndex));row.getCell((short)(i+cellIndex)).setCellStyle(cellStyleData);}}}else{str=strIn;cell.setCellStyle(cellStyleTXT);if(MergedRegionNum>1){for(int i=1;i<MergedRegionNum;i++){row.createCell((short)(i+cellIndex));row.getCell((short)(i+cellIndex)).setCellStyle(cellStyleTXT);}}}//判断数据类型写入单元格类型if(str!=null){if(str instanceof Double|| str instanceof BigDecimal){cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);cell.setCellValue(Double.parseDouble(str.toString()));}else{cell.setCellType(HSSFCell.CELL_TYPE_STRING);cell.setCellValue(new HSSFRichTextString(str.toString()));}}else{cell.setCellType(HSSFCell.CELL_TYPE_BLANK);}}/** * 生成EXCEL输出文件,默认带时间戳 * @param templateFilename 文件名 * @return */private static String generateOutputExcelFile(String templateFilename){String filename=templateFilename;if(templateFilename.endsWith(".xls")){filename=templateFilename.substring(0,templateFilename.length()-4);}SimpleDateFormat format=new SimpleDateFormat("yyyyMMddHHmmss");String datetimeString=format.format(new Date());filename=filename+"_"+datetimeString+".xls";return filename;}}
- poi导出excel,支持合并的单元格
- POI导出Excel--合并单元格
- POI导出Excel 合并单元格
- POI导出excel合并单元格
- POI导出Excel--合并单元格
- POI导出Excel合并单元格时的边框问题
- javaweb项目 基于poi的excel导出 合并单元格
- poi合并单元格同时导出excel
- poi导出excel同时合并单元格
- Java poi导出excel合并标题单元格
- poi之excel导出(不需要合并单元格)
- java poi导出excel,合并单元格
- poi java导出excel时合并单元格
- java poi导出Excel表,合并单元格
- Java poi导出excel合并标题单元格
- poi读取excel,支持合并单元格
- poi导出excel合并单元格(包括列合并、行合并)
- poi excel合并单元格
- 关于android中ListView的下拉刷新的底部时间更新问题
- ibatis中CDATA的使用
- 深入浅出 Cocoa 之 Core Data(3)- 使用绑定
- SQL SERVER中常见的数据类型
- jquery的json插件
- poi导出excel,支持合并的单元格
- MFC的四个重要类之间的关系
- Java eclipse JNI
- JSP的中文乱码问题
- eclipse打不开解决问题
- UVa 11450 - Wedding shopping
- python: 数据类型集
- Linux硬件信息查看
- 基于web项目开发的深入调研