读书人

POI 生成XLS范例

发布时间: 2012-07-26 12:01:08 作者: rapoo

POI 生成XLS实例
转载至:
http://www.4ucode.com/Study/Topic/697242

ackage test;import java.io.FileOutputStream;  import java.io.IOException;  import java.util.Date;  import org.apache.poi.hssf.usermodel.HSSFCell;  import org.apache.poi.hssf.usermodel.HSSFCellStyle;  import org.apache.poi.hssf.usermodel.HSSFDataFormat;  import org.apache.poi.hssf.usermodel.HSSFFont;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.util.HSSFColor;  import org.apache.poi.ss.util.CellRangeAddress; public class CreateCells {      /**      * 文档对象 HSSFWorkbook  ;表单对象 HSSFSheet ;行对象 HSSFRow ;列对象 HSSFCell      * excell的格子单元 HSSFFont excell字体 HSSFName 名称 HSSFDataFormat 日期格式 HSSFHeader      * sheet头 HSSFFooter sheet尾 HSSFCellStyle cell样式      */     public static void main(String[] args) throws IOException {     // 建立新HSSFWorkbook对象          HSSFWorkbook workbook = new HSSFWorkbook();          // 建立新的sheet对象          // Create a row and put some cells in it.Rows are 0 based.        HSSFSheet sheet = workbook.createSheet("表单1");        // 建立新行          // Create a cell and put a value in it.          HSSFRow row = sheet.createRow((short) 0);        //修改当前行 默认行高  列宽        //行高        sheet.setDefaultRowHeightInPoints(10);        //列款宽        sheet.setDefaultColumnWidth(10);        //设置特定单元格的宽度        sheet.setColumnWidth(4, 20*256);        sheet.setColumnWidth(5, 30*256);        sheet.setColumnWidth(6, 30*256);               // 整数类型的cell样式          //HSSFDataFormat.getBuiltinFormat("0.00")  字符串的内容是   Excel有的格式        HSSFCellStyle numStyle = workbook.createCellStyle();          numStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0"));        //创建1列        HSSFCell cellNum = row.createCell(0);        cellNum.setCellValue(1);        cellNum.setCellStyle(numStyle);                      // 浮点类型的cell样式        HSSFCellStyle doubleStyle = workbook.createCellStyle();          doubleStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));               HSSFCell cellDouble = row.createCell(1);        cellDouble.setCellValue(1.2);        cellDouble.setCellStyle(doubleStyle);                      //字符串类型的cell样式        HSSFCellStyle stringStyle = workbook.createCellStyle();          stringStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("G/通用格式"));               HSSFCell cellString= row.createCell(2);        cellString.setCellValue("test");        cellString.setCellStyle(stringStyle);               //添加cell布尔类型的值         row.createCell(3).setCellValue(true);                      //日期类型的cell样式   yyyy-m-d  h:mm:ss AM/PM        HSSFCellStyle dateStyle = workbook.createCellStyle();         dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));        HSSFCell dCell = row.createCell(4);        dCell.setCellValue(new Date());        dCell.setCellStyle(dateStyle);                      //设置cell编码解决中文高位字节截断        HSSFCell csCell = row.createCell(5);        csCell.setCellType(HSSFCell.ENCODING_UTF_16);        csCell.setCellValue("中文测试_Chinese Words Test");           // 设置  背景色     边框        HSSFCellStyle style1 = workbook.createCellStyle();        //前景色和后景色都要有  否则会出网格        style1.setFillForegroundColor(new HSSFColor.YELLOW().getIndex());          style1.setFillBackgroundColor(new HSSFColor.YELLOW().getIndex());          //设置边框        style1.setBorderBottom((short) 1);          style1.setBorderTop((short) 1);        style1.setBorderLeft((short) 1);        style1.setBorderRight((short) 1);                 //问题:用poi将一个cell中的字体设置成了红色,结果用excell打开后,这个cell中只有前面一个或几个字为红色        //HSSFFont  font  =  workbook.createFont();  font.setColor(HSSFFont.COLOR_RED);         //先Cell中把HSSFRichTextString取出        //然后HSSFRichTextString象.applyFont(font)        //最后再把HSSFRichTextString象set回到cell中就行了。。。。。               //设置字体样式=====================================        HSSFFont  font  =  workbook.createFont();        //字体位置  上 下 左 右        //font.setTypeOffset((short)0);        //字体宽度        font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);        //字体高度        font.setFontHeightInPoints((short)8);        //字体颜色        font.setColor(HSSFFont.COLOR_RED);         //=================================================        style1.setFont(font);               /**          * 注意这句代码, style1.setFillPattern, 如果你在你的程序中不设置fill pattern,那么          * 你上面设置的前景色和背景色就显示不出来.网络上很多文章都没有设置fillpattern         * 如果不改变样式  不需要添加(如:居中)         */         style1.setFillPattern(HSSFCellStyle.SPARSE_DOTS);                      HSSFCell cellCH = row.createCell(6);        cellCH.setCellValue("中文测试_Chinese Words Testsss");          cellCH.setCellStyle(style1);                      //货币样式        HSSFCellStyle moneyStyle = workbook.createCellStyle();          moneyStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0"));        HSSFCell cell12 = row.createCell(7);        cell12.setCellValue((double) 10000000);        cell12.setCellStyle(moneyStyle);         // 错误显示        row.createCell(8).setCellType(HSSFCell.CELL_TYPE_ERROR);        //合并单元格        int startRowNo=0;        int endRowNo=0;        int startCellNo=9;        int endCellNo=10;        sheet.addMergedRegion(new CellRangeAddress(startRowNo, endRowNo,startCellNo, endCellNo));  HSSFCell cell = row.createCell(9);  cell.setCellValue("合并");    //即垂直居中对齐且水平居中对齐    居中后背景颜色变化了  HSSFCellStyle style = workbook.createCellStyle();    style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直    style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平    //如果不改变样式  不需要添加  //style.setFillPattern(HSSFCellStyle.SPARSE_DOTS);  cell.setCellStyle(style);          FileOutputStream fileOut = new FileOutputStream("e:/workbook.xls");          workbook.write(fileOut);          fileOut.close();      }  }  

读书人网 >开源软件

热点推荐