From: Nick Burch Date: Sun, 16 Mar 2008 17:23:24 +0000 (+0000) Subject: More create helper stuff, and some sample formatting files X-Git-Tag: REL_3_5_BETA2~187 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=c94ce5034479bb7ee41200637af49780aa5ec1ea;p=poi.git More create helper stuff, and some sample formatting files git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@637614 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/documentation/content/xdocs/spreadsheet/quick-guide.xml b/src/documentation/content/xdocs/spreadsheet/quick-guide.xml index bde88d43bd..528582beb0 100644 --- a/src/documentation/content/xdocs/spreadsheet/quick-guide.xml +++ b/src/documentation/content/xdocs/spreadsheet/quick-guide.xml @@ -105,6 +105,7 @@ Workbook wb = new HSSFWorkbook(); //Workbook wb = new XSSFWorkbook(); + CreationHelper createHelper = wb.getCreationHelper(); Sheet sheet = wb.createSheet("new sheet"); // Create a row and put some cells in it. Rows are 0 based. @@ -116,7 +117,7 @@ // Or do it on one line. row.createCell((short)1).setCellValue(1.2); row.createCell((short)2).setCellValue( - cell.createRichTextString("This is a string")); + createHelper.createRichTextString("This is a string")); row.createCell((short)3).setCellValue(true); // Write the output to a file @@ -128,22 +129,25 @@
Creating Date Cells - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet sheet = wb.createSheet("new sheet"); + Workbook wb = new HSSFWorkbook(); + //Workbook wb = new XSSFWorkbook(); + CreationHelper createHelper = wb.getCreationHelper(); + Sheet sheet = wb.createSheet("new sheet"); // Create a row and put some cells in it. Rows are 0 based. - HSSFRow row = sheet.createRow((short)0); + Row row = sheet.createRow((short)0); // Create a cell and put a date value in it. The first cell is not styled // as a date. - HSSFCell cell = row.createCell((short)0); + Cell cell = row.createCell((short)0); cell.setCellValue(new Date()); // we style the second cell as a date (and time). It is important to // create a new cell style from the workbook otherwise you can end up // modifying the built in style and effecting not only this cell but other cells. - HSSFCellStyle cellStyle = wb.createCellStyle(); - cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); + CellStyle cellStyle = wb.createCellStyle(); + cellStyle.setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy h:mm")); cell = row.createCell((short)1); cell.setCellValue(new Date()); cell.setCellStyle(cellStyle); diff --git a/src/examples/src/org/apache/poi/ss/usermodel/examples/FromQuickGuide.java b/src/examples/src/org/apache/poi/ss/usermodel/examples/FromQuickGuide.java index 1a1913a693..88433e1b5e 100644 --- a/src/examples/src/org/apache/poi/ss/usermodel/examples/FromQuickGuide.java +++ b/src/examples/src/org/apache/poi/ss/usermodel/examples/FromQuickGuide.java @@ -18,9 +18,13 @@ package org.apache.poi.ss.usermodel.examples; import java.io.FileOutputStream; import java.io.IOException; +import java.util.Date; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.CreationHelper; +import org.apache.poi.ss.usermodel.DataFormat; import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; @@ -71,6 +75,7 @@ public class FromQuickGuide { for (int i = 0; i < wbs.length; i++) { Workbook wb = wbs[i]; + CreationHelper createHelper = wb.getCreationHelper(); Sheet sheet = wb.createSheet("new sheet"); // Create a row and put some cells in it. Rows are 0 based. @@ -82,7 +87,7 @@ public class FromQuickGuide { // Or do it on one line. row.createCell((short)1).setCellValue(1.2); row.createCell((short)2).setCellValue( - cell.createRichTextString("This is a string")); + createHelper.createRichTextString("This is a string")); row.createCell((short)3).setCellValue(true); // Write the output to a file @@ -91,4 +96,33 @@ public class FromQuickGuide { fileOut.close(); } } + + public void newDateCells() throws IOException { + Workbook wb = new HSSFWorkbook(); + //Workbook wb = new XSSFWorkbook(); + CreationHelper createHelper = wb.getCreationHelper(); + Sheet sheet = wb.createSheet("new sheet"); + + // Create a row and put some cells in it. Rows are 0 based. + Row row = sheet.createRow((short)0); + + // Create a cell and put a date value in it. The first cell is not styled + // as a date. + Cell cell = row.createCell((short)0); + cell.setCellValue(new Date()); + + // we style the second cell as a date (and time). It is important to + // create a new cell style from the workbook otherwise you can end up + // modifying the built in style and effecting not only this cell but other cells. + CellStyle cellStyle = wb.createCellStyle(); + cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("m/d/yy h:mm")); + cell = row.createCell((short)1); + cell.setCellValue(new Date()); + cell.setCellStyle(cellStyle); + + // Write the output to a file + FileOutputStream fileOut = new FileOutputStream("workbook.xls"); + wb.write(fileOut); + fileOut.close(); + } } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java index ba812e20e5..f906e91a49 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java @@ -1141,11 +1141,4 @@ public class HSSFCell implements Cell int eofLoc = sheet.findFirstRecordLocBySid( EOFRecord.sid ); sheet.getRecords().add( eofLoc, link.record ); } - - /** - * Creates a new HSSFRichTextString for you. - */ - public RichTextString createRichTextString(String text) { - return new HSSFRichTextString(text); - } } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFCreationHelper.java b/src/java/org/apache/poi/hssf/usermodel/HSSFCreationHelper.java new file mode 100644 index 0000000000..aadba9a4ad --- /dev/null +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFCreationHelper.java @@ -0,0 +1,44 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ +package org.apache.poi.hssf.usermodel; + +import org.apache.poi.ss.usermodel.CreationHelper; +import org.apache.poi.ss.usermodel.DataFormat; +import org.apache.poi.ss.usermodel.RichTextString; + +public class HSSFCreationHelper implements CreationHelper { + private HSSFWorkbook workbook; + private HSSFDataFormat dataFormat; + + HSSFCreationHelper(HSSFWorkbook wb) { + workbook = wb; + + // Create the things we only ever need one of + dataFormat = new HSSFDataFormat(workbook.getWorkbook()); + } + + /** + * Creates a new HSSFRichTextString for you. + */ + public RichTextString createRichTextString(String text) { + return new HSSFRichTextString(text); + } + + public DataFormat createDataFormat() { + return dataFormat; + } +} diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java index 686bd433d7..837a5ff744 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java @@ -63,6 +63,7 @@ import org.apache.poi.hssf.record.formula.MemFuncPtg; import org.apache.poi.hssf.record.formula.UnionPtg; import org.apache.poi.hssf.util.CellReference; import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.apache.poi.ss.usermodel.CreationHelper; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; @@ -1460,6 +1461,10 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm } } } + + public CreationHelper getCreationHelper() { + return new HSSFCreationHelper(this); + } private byte[] newUID() { diff --git a/src/testcases/org/apache/poi/hssf/data/Formatting.xls b/src/testcases/org/apache/poi/hssf/data/Formatting.xls new file mode 100755 index 0000000000..b8354173e2 Binary files /dev/null and b/src/testcases/org/apache/poi/hssf/data/Formatting.xls differ diff --git a/src/testcases/org/apache/poi/hssf/data/Formatting.xlsx b/src/testcases/org/apache/poi/hssf/data/Formatting.xlsx new file mode 100755 index 0000000000..b1f2e26a03 Binary files /dev/null and b/src/testcases/org/apache/poi/hssf/data/Formatting.xlsx differ