diff options
author | Yegor Kozlov <yegor@apache.org> | 2008-11-14 11:56:41 +0000 |
---|---|---|
committer | Yegor Kozlov <yegor@apache.org> | 2008-11-14 11:56:41 +0000 |
commit | c67c1d5ca0545d59ca3b8515bd78e7f02328c118 (patch) | |
tree | 3dcff450c33781788555bd27ae62dee84b902670 | |
parent | dfa42cbf38a6e7adf0e98cc6e76f6126c9fc4617 (diff) | |
download | poi-c67c1d5ca0545d59ca3b8515bd78e7f02328c118.tar.gz poi-c67c1d5ca0545d59ca3b8515bd78e7f02328c118.zip |
1. fixed XSSFSheet.groupRow and ungroupRow to operate on 0-based arguments, was 1-based2. repackaged common xssh-hssf examples, created a page in the site for them 3. converted broken non-ascii characters to unicode in TestMetaDataIPI and TestWriteWellKnown
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@713981 13f79535-47bb-0310-9956-ffa450edef68
23 files changed, 640 insertions, 261 deletions
diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index 469e516a5a..8257ad5ef1 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -37,11 +37,11 @@ <!-- Don't forget to update status.xml too! --> <release version="3.5-beta4" date="2008-??-??"> - <action dev="POI-DEVELOPERS" type="fix">46174 - Fixed HSSFName to handle general formulas (not just area references)</header> + <action dev="POI-DEVELOPERS" type="fix">46174 - Fixed HSSFName to handle general formulas (not just area references)</action> <action dev="POI-DEVELOPERS" type="add">46189 - added chart records: CHARTFRTINFO, STARTBLOCK, ENDBLOCK, STARTOBJECT, ENDOBJECT, and CATLAB</action> - <action dev="POI-DEVELOPERS" type="fix">46199 - More tweaks to EmbeddedObjectRefSubRecord</header> + <action dev="POI-DEVELOPERS" type="fix">46199 - More tweaks to EmbeddedObjectRefSubRecord</action> <action dev="POI-DEVELOPERS" type="add">Changes to formula evaluation allowing for reduced memory usage</action> - <action dev="POI-DEVELOPERS" type="fix">45290 - Support odd files where the POIFS header block comes after the data blocks, and is on the data blocks list</header> + <action dev="POI-DEVELOPERS" type="fix">45290 - Support odd files where the POIFS header block comes after the data blocks, and is on the data blocks list</action> <action dev="POI-DEVELOPERS" type="fix">46184 - More odd escaped date formats</action> <action dev="POI-DEVELOPERS" type="add">Include the sheet number in the output of XLS2CSVmra</action> <action dev="POI-DEVELOPERS" type="fix">46043 - correctly write out HPSF properties with HWPF</action> diff --git a/src/documentation/content/xdocs/spreadsheet/book.xml b/src/documentation/content/xdocs/spreadsheet/book.xml index 7e8a59d7d8..55d1470b00 100644 --- a/src/documentation/content/xdocs/spreadsheet/book.xml +++ b/src/documentation/content/xdocs/spreadsheet/book.xml @@ -34,7 +34,8 @@ <menu-item label="HSSF to SS Converting" href="converting.html"/> <menu-item label="Formula Support" href="formula.html" /> <menu-item label="Formula Evaluation" href="eval.html" /> - <menu-item label="Eval Dev Guide" href="eval-devguide.html" /> + <menu-item label="Eval Dev Guide" href="eval-devguide.html" /> + <menu-item label="Examples" href="examples.html"/> <menu-item label="Use Case" href="use-case.html"/> <menu-item label="Pictorial Docs" href="diagrams.html"/> <menu-item label="Limitations" href="limitations.html"/> diff --git a/src/documentation/content/xdocs/spreadsheet/examples.xml b/src/documentation/content/xdocs/spreadsheet/examples.xml new file mode 100755 index 0000000000..f683738a3a --- /dev/null +++ b/src/documentation/content/xdocs/spreadsheet/examples.xml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ==================================================================== + 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. + ==================================================================== +--> +<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "../dtd/document-v11.dtd"> + +<document> + <header> + <title>HSSF and XSSF Examples</title> + <authors> + <person id="YK" name="Yegor Kozlov" email="user@poi.apache.org"/> + </authors> + </header> + <body> + <section><title>HSSF and XSSF examples</title> + <p>POI comes with a number of examples that demonstrate how you can use POI API to create documents from "real life". + The examples are based on common XSSF-HSSF interfaces so that you can generate either *.xls or *.xlsx output just by setting a command-line argument: + </p> + <source> + BusinessPlan -xls + or + BusinessPlan -xlsx + </source> + <p>All sample source is available in <link href="http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/ss/examples/">SVN</link></p> + </section> + <section><title>BusinessPlan</title> + <p> The <link href="http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/ss/examples/BusinessPlan.java">BusinessPlan</link> + application creates a sample business plan with three phases, weekly iterations and time highlighting. Demonstrates advanced cell formatting + (number and date formats, alignmnets, fills, borders) and various settings for organizing data in a sheet (freezed panes, groupped rows). + </p> + <p> + <img src="../resources/images/businessplan.jpg" alt="business plan demo"/> + </p> + </section> + <section><title>Calendar</title> + <p> The <link href="http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/ss/examples/Calendar.java">Calendar</link> + demo creates a multi sheet calendar. Each month is on a separate sheet. + </p> + <p> + <img src="../resources/images/calendar.jpg" alt="calendar demo"/> + </p> + </section> + <section><title>LoanCalculator</title> + <p> The <link href="http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/ss/examples/LoanCalculator.java">LoanCalculator</link> + demo creates a simple loan calculator. Demonstrates advance usage of cell formulas and named ranges. + </p> + <p> + <img src="../resources/images/loancalc.jpg" alt="loan calculator demo"/> + </p> + </section> + <section><title>TimesheetDemo</title> + <p> The <link href="http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/ss/examples/TimesheetDemo.java">TimesheetDemo</link> + demo creates a weekly timesheet with automatic calculation of total hours. Demonstrates advance usage of cell formulas. + </p> + <p> + <img src="../resources/images/timesheet.jpg" alt="timesheet demo"/> + </p> + </section> + </body> +</document> diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 5ec9d4401a..d3f1ed911b 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,11 +34,11 @@ <!-- Don't forget to update changes.xml too! --> <changes> <release version="3.5-beta4" date="2008-??-??"> - <action dev="POI-DEVELOPERS" type="fix">46174 - Fixed HSSFName to handle general formulas (not just area references)</header> + <action dev="POI-DEVELOPERS" type="fix">46174 - Fixed HSSFName to handle general formulas (not just area references)</action> <action dev="POI-DEVELOPERS" type="add">46189 - added chart records: CHARTFRTINFO, STARTBLOCK, ENDBLOCK, STARTOBJECT, ENDOBJECT, and CATLAB</action> - <action dev="POI-DEVELOPERS" type="fix">46199 - More tweaks to EmbeddedObjectRefSubRecord</header> + <action dev="POI-DEVELOPERS" type="fix">46199 - More tweaks to EmbeddedObjectRefSubRecord</action> <action dev="POI-DEVELOPERS" type="add">Changes to formula evaluation allowing for reduced memory usage</action> - <action dev="POI-DEVELOPERS" type="fix">45290 - Support odd files where the POIFS header block comes after the data blocks, and is on the data blocks list</header> + <action dev="POI-DEVELOPERS" type="fix">45290 - Support odd files where the POIFS header block comes after the data blocks, and is on the data blocks list</action> <action dev="POI-DEVELOPERS" type="fix">46184 - More odd escaped date formats</action> <action dev="POI-DEVELOPERS" type="add">Include the sheet number in the output of XLS2CSVmra</action> <action dev="POI-DEVELOPERS" type="fix">46043 - correctly write out HPSF properties with HWPF</action> diff --git a/src/documentation/resources/images/businessplan.jpg b/src/documentation/resources/images/businessplan.jpg Binary files differnew file mode 100755 index 0000000000..9bfaf4c7b2 --- /dev/null +++ b/src/documentation/resources/images/businessplan.jpg diff --git a/src/documentation/resources/images/calendar.jpg b/src/documentation/resources/images/calendar.jpg Binary files differnew file mode 100755 index 0000000000..4f11878290 --- /dev/null +++ b/src/documentation/resources/images/calendar.jpg diff --git a/src/documentation/resources/images/loancalc.jpg b/src/documentation/resources/images/loancalc.jpg Binary files differnew file mode 100755 index 0000000000..fdc62e82dd --- /dev/null +++ b/src/documentation/resources/images/loancalc.jpg diff --git a/src/documentation/resources/images/timesheet.jpg b/src/documentation/resources/images/timesheet.jpg Binary files differnew file mode 100755 index 0000000000..1ff512b1f9 --- /dev/null +++ b/src/documentation/resources/images/timesheet.jpg diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/BusinessPlan.java b/src/examples/src/org/apache/poi/ss/examples/BusinessPlan.java index b562417ac6..8d3fcf8224 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/BusinessPlan.java +++ b/src/examples/src/org/apache/poi/ss/examples/BusinessPlan.java @@ -14,20 +14,22 @@ See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-package org.apache.poi.xssf.usermodel.examples;
+package org.apache.poi.ss.examples;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import java.util.Map;
import java.util.HashMap;
-import java.util.Date;
import java.util.Calendar;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
/**
* A business plan demo
+ * Usage:
+ * BusinessPlan -xls|xlsx
*
* @author Yegor Kozlov
*/
@@ -35,85 +37,94 @@ public class BusinessPlan { private static SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM");
- private static final String[] days = {
+ private static final String[] titles = {
"ID", "Project Name", "Owner", "Days", "Start", "End"};
//sample data to fill the sheet.
private static final String[][] data = {
- {"1.0", "Marketing Research Tactical Plan", "R. Ihrig", "70", "9-Jul", null,
+ {"1.0", "Marketing Research Tactical Plan", "J. Dow", "70", "9-Jul", null,
"x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x"},
null,
- {"1.1", "Scope Definition Phase", "R. Ihrig", "10", "9-Jul", null,
+ {"1.1", "Scope Definition Phase", "J. Dow", "10", "9-Jul", null,
"x", "x", null, null, null, null, null, null, null, null, null},
- {"1.1.1", "Define research objectives", "R. Ihrig", "3", "9-Jul", null,
+ {"1.1.1", "Define research objectives", "J. Dow", "3", "9-Jul", null,
"x", null, null, null, null, null, null, null, null, null, null},
- {"1.1.2", "Define research requirements", "S. Abbas", "7", "10-Jul", null,
+ {"1.1.2", "Define research requirements", "S. Jones", "7", "10-Jul", null,
"x", "x", null, null, null, null, null, null, null, null, null},
- {"1.1.3", "Determine in-house resource or hire vendor", "R. Ihrig", "2", "15-Jul", null,
+ {"1.1.3", "Determine in-house resource or hire vendor", "J. Dow", "2", "15-Jul", null,
"x", "x", null, null, null, null, null, null, null, null, null},
null,
- {"1.2", "Vendor Selection Phase", "R. Ihrig", "19", "19-Jul", null,
+ {"1.2", "Vendor Selection Phase", "J. Dow", "19", "19-Jul", null,
null, "x", "x", "x", "x", null, null, null, null, null, null},
- {"1.2.1", "Define vendor selection criteria", "R. Ihrig", "3", "19-Jul", null,
+ {"1.2.1", "Define vendor selection criteria", "J. Dow", "3", "19-Jul", null,
null, "x", null, null, null, null, null, null, null, null, null},
- {"1.2.2", "Develop vendor selection questionnaire", "S. Abbas, T. Wang", "2", "22-Jul", null,
+ {"1.2.2", "Develop vendor selection questionnaire", "S. Jones, T. Wates", "2", "22-Jul", null,
null, "x", "x", null, null, null, null, null, null, null, null},
- {"1.2.3", "Develop Statement of Work", "S. Abbas", "4", "26-Jul", null,
+ {"1.2.3", "Develop Statement of Work", "S. Jones", "4", "26-Jul", null,
null, null, "x", "x", null, null, null, null, null, null, null},
- {"1.2.4", "Evaluate proposal", "R. Ihrig, S. Abbas", "4", "2-Aug", null,
+ {"1.2.4", "Evaluate proposal", "J. Dow, S. Jones", "4", "2-Aug", null,
null, null, null, "x", "x", null, null, null, null, null, null},
- {"1.2.5", "Select vendor", "R. Ihrig", "1", "6-Aug", null,
+ {"1.2.5", "Select vendor", "J. Dow", "1", "6-Aug", null,
null, null, null, null, "x", null, null, null, null, null, null},
null,
- {"1.3", "Research Phase", "Y. Li", "47", "9-Aug", null,
+ {"1.3", "Research Phase", "G. Lee", "47", "9-Aug", null,
null, null, null, null, "x", "x", "x", "x", "x", "x", "x"},
- {"1.3.1", "Develop market research information needs questionnaire", "Y. Li", "2", "9-Aug", null,
+ {"1.3.1", "Develop market research information needs questionnaire", "G. Lee", "2", "9-Aug", null,
null, null, null, null, "x", null, null, null, null, null, null},
- {"1.3.2", "Interview marketing group for market research needs", "Y. Li", "2", "11-Aug", null,
+ {"1.3.2", "Interview marketing group for market research needs", "G. Lee", "2", "11-Aug", null,
null, null, null, null, "x", "x", null, null, null, null, null},
- {"1.3.3", "Document information needs", "Y. Li, S. Abbas", "1", "13-Aug", null,
+ {"1.3.3", "Document information needs", "G. Lee, S. Jones", "1", "13-Aug", null,
null, null, null, null, null, "x", null, null, null, null, null},
};
public static void main(String[] args) throws Exception {
- Calendar calendar = Calendar.getInstance();
- int year = calendar.get(Calendar.YEAR);
+ Workbook wb;
+
+ if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook();
+ else wb = new XSSFWorkbook();
- XSSFWorkbook wb = new XSSFWorkbook();
- Map<String, XSSFCellStyle> styles = createStyles(wb);
+ Map<String, CellStyle> styles = createStyles(wb);
- XSSFSheet sheet = wb.createSheet("Plan");
+ Sheet sheet = wb.createSheet("Business Plan");
//turn off gridlines
sheet.setDisplayGridlines(false);
sheet.setPrintGridlines(false);
- XSSFPrintSetup printSetup = sheet.getPrintSetup();
- printSetup.setOrientation(PrintOrientation.LANDSCAPE);
sheet.setFitToPage(true);
sheet.setHorizontallyCenter(true);
+ PrintSetup printSetup = sheet.getPrintSetup();
+ printSetup.setLandscape(true);
+
+ //the following three statements are required only for HSSF
+ sheet.setAutobreaks(true);
+ printSetup.setFitHeight((short)1);
+ printSetup.setFitWidth((short)1);
//the header row: centered text in 48pt font
- XSSFRow headerRow = sheet.createRow(0);
+ Row headerRow = sheet.createRow(0);
headerRow.setHeightInPoints(12.75f);
- for (int i = 0; i < days.length; i++) {
- XSSFCell cell = headerRow.createCell(i);
- cell.setCellValue(days[i]);
+ for (int i = 0; i < titles.length; i++) {
+ Cell cell = headerRow.createCell(i);
+ cell.setCellValue(titles[i]);
cell.setCellStyle(styles.get("header"));
}
//columns for 11 weeks starting from 9-Jul
+ Calendar calendar = Calendar.getInstance();
+ int year = calendar.get(Calendar.YEAR);
+
calendar.setTime(fmt.parse("9-Jul"));
calendar.set(Calendar.YEAR, year);
for (int i = 0; i < 11; i++) {
- XSSFCell cell = headerRow.createCell(days.length + i);
+ Cell cell = headerRow.createCell(titles.length + i);
cell.setCellValue(calendar);
cell.setCellStyle(styles.get("header_date"));
calendar.roll(Calendar.WEEK_OF_YEAR, true);
}
-
+ //freeze the first row
sheet.createFreezePane(0, 1);
- XSSFRow row;
- XSSFCell cell;
+ Row row;
+ Cell cell;
int rownum = 1;
for (int i = 0; i < data.length; i++, rownum++) {
row = sheet.createRow(rownum);
@@ -171,139 +182,142 @@ public class BusinessPlan { }
}
+ //group rows for each phase, row numbers are 0-based
+ sheet.groupRow(4, 6);
+ sheet.groupRow(9, 13);
+ sheet.groupRow(16, 18);
- sheet.groupRow(5, 7);
- sheet.groupRow(10, 14);
- sheet.groupRow(17, 19);
-
+ //set column widths, the width is measured in units of 1/256th of a character width
sheet.setColumnWidth(0, 256*6);
sheet.setColumnWidth(1, 256*33);
sheet.setColumnWidth(2, 256*20);
- sheet.setZoom(75);
+ sheet.setZoom(3, 4);
// Write the output to a file
- FileOutputStream out = new FileOutputStream("xssf-plan.xlsx");
+ String file = "businessplan.xls";
+ if(wb instanceof XSSFWorkbook) file += "x";
+ FileOutputStream out = new FileOutputStream(file);
wb.write(out);
out.close();
}
/**
- * cell styles used for formatting calendar sheets
+ * create a library of cell styles
*/
- private static Map<String, XSSFCellStyle> createStyles(XSSFWorkbook wb){
- Map<String, XSSFCellStyle> styles = new HashMap<String, XSSFCellStyle>();
- XSSFDataFormat df = wb.createDataFormat();
+ private static Map<String, CellStyle> createStyles(Workbook wb){
+ Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
+ DataFormat df = wb.createDataFormat();
- XSSFCellStyle style;
- XSSFFont headerFont = wb.createFont();
- headerFont.setBold(true);
+ CellStyle style;
+ Font headerFont = wb.createFont();
+ headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
style = createBorderedStyle(wb);
- style.setAlignment(HorizontalAlignment.CENTER);
- style.setFillForegroundColor(new XSSFColor(new java.awt.Color(204, 204, 255)));
- style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
style.setFont(headerFont);
styles.put("header", style);
style = createBorderedStyle(wb);
- style.setAlignment(HorizontalAlignment.CENTER);
- style.setFillForegroundColor(new XSSFColor(new java.awt.Color(204, 204, 255)));
- style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
style.setFont(headerFont);
style.setDataFormat(df.getFormat("d-mmm"));
styles.put("header_date", style);
- XSSFFont font1 = wb.createFont();
- font1.setBold(true);
+ Font font1 = wb.createFont();
+ font1.setBoldweight(Font.BOLDWEIGHT_BOLD);
style = createBorderedStyle(wb);
- style.setAlignment(HorizontalAlignment.LEFT);
+ style.setAlignment(CellStyle.ALIGN_LEFT);
style.setFont(font1);
styles.put("cell_b", style);
style = createBorderedStyle(wb);
- style.setAlignment(HorizontalAlignment.CENTER);
+ style.setAlignment(CellStyle.ALIGN_CENTER);
style.setFont(font1);
styles.put("cell_b_centered", style);
style = createBorderedStyle(wb);
- style.setAlignment(HorizontalAlignment.RIGHT);
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
style.setFont(font1);
style.setDataFormat(df.getFormat("d-mmm"));
styles.put("cell_b_date", style);
style = createBorderedStyle(wb);
- style.setAlignment(HorizontalAlignment.RIGHT);
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
style.setFont(font1);
- style.setFillForegroundColor(new XSSFColor(new java.awt.Color(228, 228, 228)));
- style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
style.setDataFormat(df.getFormat("d-mmm"));
styles.put("cell_g", style);
- XSSFFont font2 = wb.createFont();
+ Font font2 = wb.createFont();
font2.setColor(IndexedColors.BLUE.getIndex());
- font2.setBold(true);
+ font2.setBoldweight(Font.BOLDWEIGHT_BOLD);
style = createBorderedStyle(wb);
- style.setAlignment(HorizontalAlignment.LEFT);
+ style.setAlignment(CellStyle.ALIGN_LEFT);
style.setFont(font2);
styles.put("cell_bb", style);
style = createBorderedStyle(wb);
- style.setAlignment(HorizontalAlignment.RIGHT);
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
style.setFont(font1);
- style.setFillForegroundColor(new XSSFColor(new java.awt.Color(228, 228, 228)));
- style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
style.setDataFormat(df.getFormat("d-mmm"));
styles.put("cell_bg", style);
- XSSFFont font3 = wb.createFont();
+ Font font3 = wb.createFont();
font3.setFontHeightInPoints((short)14);
font3.setColor(IndexedColors.DARK_BLUE.getIndex());
- font3.setBold(true);
+ font3.setBoldweight(Font.BOLDWEIGHT_BOLD);
style = createBorderedStyle(wb);
- style.setAlignment(HorizontalAlignment.LEFT);
+ style.setAlignment(CellStyle.ALIGN_LEFT);
style.setFont(font3);
style.setWrapText(true);
styles.put("cell_h", style);
style = createBorderedStyle(wb);
- style.setAlignment(HorizontalAlignment.LEFT);
+ style.setAlignment(CellStyle.ALIGN_LEFT);
style.setWrapText(true);
styles.put("cell_normal", style);
style = createBorderedStyle(wb);
- style.setAlignment(HorizontalAlignment.CENTER);
+ style.setAlignment(CellStyle.ALIGN_CENTER);
style.setWrapText(true);
styles.put("cell_normal_centered", style);
style = createBorderedStyle(wb);
- style.setAlignment(HorizontalAlignment.RIGHT);
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
style.setWrapText(true);
style.setDataFormat(df.getFormat("d-mmm"));
styles.put("cell_normal_date", style);
style = createBorderedStyle(wb);
- style.setAlignment(HorizontalAlignment.LEFT);
+ style.setAlignment(CellStyle.ALIGN_LEFT);
style.setIndention((short)1);
style.setWrapText(true);
styles.put("cell_indented", style);
style = createBorderedStyle(wb);
style.setFillForegroundColor(IndexedColors.BLUE.getIndex());
- style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
styles.put("cell_blue", style);
return styles;
}
- private static XSSFCellStyle createBorderedStyle(XSSFWorkbook wb){
- XSSFCellStyle style = wb.createCellStyle();
- style.setBorderRight(BorderStyle.THIN);
+ private static CellStyle createBorderedStyle(Workbook wb){
+ CellStyle style = wb.createCellStyle();
+ style.setBorderRight(CellStyle.BORDER_THIN);
style.setRightBorderColor(IndexedColors.BLACK.getIndex());
- style.setBorderBottom(BorderStyle.THIN);
+ style.setBorderBottom(CellStyle.BORDER_THIN);
style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
- style.setBorderLeft(BorderStyle.THIN);
+ style.setBorderLeft(CellStyle.BORDER_THIN);
style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
- style.setBorderTop(BorderStyle.THIN);
+ style.setBorderTop(CellStyle.BORDER_THIN);
style.setTopBorderColor(IndexedColors.BLACK.getIndex());
return style;
}
diff --git a/src/examples/src/org/apache/poi/ss/examples/CalendarDemo.java b/src/examples/src/org/apache/poi/ss/examples/CalendarDemo.java new file mode 100755 index 0000000000..5cdf794841 --- /dev/null +++ b/src/examples/src/org/apache/poi/ss/examples/CalendarDemo.java @@ -0,0 +1,242 @@ +/* ====================================================================
+ 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.ss.examples;
+
+import org.apache.poi.xssf.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.usermodel.Font;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+
+import java.io.FileOutputStream;
+import java.util.Calendar;
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * A monthly calendar created using Apache POI. Each month is on a separate sheet.
+ * <pre>
+ * Usage:
+ * CalendarDemo -xls|xlsx <year>
+ * </pre>
+ *
+ * @author Yegor Kozlov
+ */
+public class CalendarDemo {
+
+ private static final String[] days = {
+ "Sunday", "Monday", "Tuesday",
+ "Wednesday", "Thursday", "Friday", "Saturday"};
+
+ private static final String[] months = {
+ "January", "February", "March","April", "May", "June","July", "August",
+ "September","October", "November", "December"};
+
+ public static void main(String[] args) throws Exception {
+
+ Calendar calendar = Calendar.getInstance();
+ boolean xlsx = true;
+ for (int i = 0; i < args.length; i++) {
+ if(args[i].charAt(0) == '-'){
+ xlsx = args[i].equals("-xlsx");
+ } else {
+ calendar.set(Calendar.YEAR, Integer.parseInt(args[i]));
+ }
+ }
+ int year = calendar.get(Calendar.YEAR);
+
+ Workbook wb = xlsx ? new XSSFWorkbook() : new HSSFWorkbook();
+
+ Map<String, CellStyle> styles = createStyles(wb);
+
+ for (int month = 0; month < 12; month++) {
+ calendar.set(Calendar.MONTH, month);
+ calendar.set(Calendar.DAY_OF_MONTH, 1);
+ //create a sheet for each month
+ Sheet sheet = wb.createSheet(months[month]);
+
+ //turn off gridlines
+ sheet.setDisplayGridlines(false);
+ sheet.setPrintGridlines(false);
+ sheet.setFitToPage(true);
+ sheet.setHorizontallyCenter(true);
+ PrintSetup printSetup = sheet.getPrintSetup();
+ printSetup.setLandscape(true);
+
+ //the following three statements are required only for HSSF
+ sheet.setAutobreaks(true);
+ printSetup.setFitHeight((short)1);
+ printSetup.setFitWidth((short)1);
+
+ //the header row: centered text in 48pt font
+ Row headerRow = sheet.createRow(0);
+ headerRow.setHeightInPoints(80);
+ Cell titleCell = headerRow.createCell(0);
+ titleCell.setCellValue(months[month] + " " + year);
+ titleCell.setCellStyle(styles.get("title"));
+ sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$N$1"));
+
+ //header with month titles
+ Row monthRow = sheet.createRow(1);
+ for (int i = 0; i < days.length; i++) {
+ //set column widths, the width is measured in units of 1/256th of a character width
+ sheet.setColumnWidth(i*2, 5*256); //the column is 5 characters wide
+ sheet.setColumnWidth(i*2 + 1, 13*256); //the column is 13 characters wide
+ sheet.addMergedRegion(new CellRangeAddress(1, 1, i*2, i*2+1));
+ Cell monthCell = monthRow.createCell(i*2);
+ monthCell.setCellValue(days[i]);
+ monthCell.setCellStyle(styles.get("month"));
+ }
+
+ int cnt = 1, day=1;
+ int rownum = 2;
+ for (int j = 0; j < 6; j++) {
+ Row row = sheet.createRow(rownum++);
+ row.setHeightInPoints(100);
+ for (int i = 0; i < days.length; i++) {
+ Cell dayCell_1 = row.createCell(i*2);
+ Cell dayCell_2 = row.createCell(i*2 + 1);
+
+ int day_of_week = calendar.get(Calendar.DAY_OF_WEEK);
+ if(cnt >= day_of_week && calendar.get(Calendar.MONTH) == month) {
+ dayCell_1.setCellValue(day);
+ calendar.set(Calendar.DAY_OF_MONTH, ++day);
+
+ if(i == 0 || i == days.length-1) {
+ dayCell_1.setCellStyle(styles.get("weekend_left"));
+ dayCell_2.setCellStyle(styles.get("weekend_right"));
+ } else {
+ dayCell_1.setCellStyle(styles.get("workday_left"));
+ dayCell_2.setCellStyle(styles.get("workday_right"));
+ }
+ } else {
+ dayCell_1.setCellStyle(styles.get("grey_left"));
+ dayCell_2.setCellStyle(styles.get("grey_right"));
+ }
+ cnt++;
+ }
+ if(calendar.get(Calendar.MONTH) > month) break;
+ }
+ }
+
+ // Write the output to a file
+ String file = "calendar.xls";
+ if(wb instanceof XSSFWorkbook) file += "x";
+ FileOutputStream out = new FileOutputStream(file);
+ wb.write(out);
+ out.close();
+ }
+
+ /**
+ * cell styles used for formatting calendar sheets
+ */
+ private static Map<String, CellStyle> createStyles(Workbook wb){
+ Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
+
+ short borderColor = IndexedColors.GREY_50_PERCENT.getIndex();
+
+ CellStyle style;
+ Font titleFont = wb.createFont();
+ titleFont.setFontHeightInPoints((short)48);
+ titleFont.setColor(IndexedColors.DARK_BLUE.getIndex());
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+ style.setFont(titleFont);
+ styles.put("title", style);
+
+ Font monthFont = wb.createFont();
+ monthFont.setFontHeightInPoints((short)12);
+ monthFont.setColor(IndexedColors.WHITE.getIndex());
+ monthFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+ style.setFillForegroundColor(IndexedColors.DARK_BLUE.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setFont(monthFont);
+ styles.put("month", style);
+
+ Font dayFont = wb.createFont();
+ dayFont.setFontHeightInPoints((short)14);
+ dayFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_LEFT);
+ style.setVerticalAlignment(CellStyle.VERTICAL_TOP);
+ style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setBorderLeft(CellStyle.BORDER_THIN);
+ style.setLeftBorderColor(borderColor);
+ style.setBorderBottom(CellStyle.BORDER_THIN);
+ style.setBottomBorderColor(borderColor);
+ style.setFont(dayFont);
+ styles.put("weekend_left", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setVerticalAlignment(CellStyle.VERTICAL_TOP);
+ style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setBorderRight(CellStyle.BORDER_THIN);
+ style.setRightBorderColor(borderColor);
+ style.setBorderBottom(CellStyle.BORDER_THIN);
+ style.setBottomBorderColor(borderColor);
+ styles.put("weekend_right", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_LEFT);
+ style.setVerticalAlignment(CellStyle.VERTICAL_TOP);
+ style.setBorderLeft(CellStyle.BORDER_THIN);
+ style.setFillForegroundColor(IndexedColors.WHITE.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setLeftBorderColor(borderColor);
+ style.setBorderBottom(CellStyle.BORDER_THIN);
+ style.setBottomBorderColor(borderColor);
+ style.setFont(dayFont);
+ styles.put("workday_left", style);
+
+ style = wb.createCellStyle();
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setVerticalAlignment(CellStyle.VERTICAL_TOP);
+ style.setFillForegroundColor(IndexedColors.WHITE.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setBorderRight(CellStyle.BORDER_THIN);
+ style.setRightBorderColor(borderColor);
+ style.setBorderBottom(CellStyle.BORDER_THIN);
+ style.setBottomBorderColor(borderColor);
+ styles.put("workday_right", style);
+
+ style = wb.createCellStyle();
+ style.setBorderLeft(CellStyle.BORDER_THIN);
+ style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setBorderBottom(CellStyle.BORDER_THIN);
+ style.setBottomBorderColor(borderColor);
+ styles.put("grey_left", style);
+
+ style = wb.createCellStyle();
+ style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+ style.setBorderRight(CellStyle.BORDER_THIN);
+ style.setRightBorderColor(borderColor);
+ style.setBorderBottom(CellStyle.BORDER_THIN);
+ style.setBottomBorderColor(borderColor);
+ styles.put("grey_right", style);
+
+ return styles;
+ }
+}
diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/LoanCalculator.java b/src/examples/src/org/apache/poi/ss/examples/LoanCalculator.java index 187ab579cd..96bb5f1652 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/LoanCalculator.java +++ b/src/examples/src/org/apache/poi/ss/examples/LoanCalculator.java @@ -14,32 +14,40 @@ See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-package org.apache.poi.xssf.usermodel.examples;
+package org.apache.poi.ss.examples;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import java.util.Map;
import java.util.HashMap;
import java.io.FileOutputStream;
/**
- * Simple Loan Calculator
+ * Simple Loan Calculator. Demonstrates advance usage of cell formulas and named ranges.
+ *
+ * Usage:
+ * LoanCalculator -xls|xlsx
*
* @author Yegor Kozlov
*/
public class LoanCalculator {
public static void main(String[] args) throws Exception {
- XSSFWorkbook wb = new XSSFWorkbook();
- Map<String, XSSFCellStyle> styles = createStyles(wb);
- XSSFSheet sheet = wb.createSheet("Loan Calculator");
+ Workbook wb;
+
+ if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook();
+ else wb = new XSSFWorkbook();
+
+ Map<String, CellStyle> styles = createStyles(wb);
+ Sheet sheet = wb.createSheet("Loan Calculator");
sheet.setPrintGridlines(false);
sheet.setDisplayGridlines(false);
- XSSFPrintSetup printSetup = sheet.getPrintSetup();
- printSetup.setOrientation(PrintOrientation.LANDSCAPE);
+ PrintSetup printSetup = sheet.getPrintSetup();
+ printSetup.setLandscape(true);
sheet.setFitToPage(true);
sheet.setHorizontallyCenter(true);
@@ -53,17 +61,17 @@ public class LoanCalculator { createNames(wb);
- XSSFRow titleRow = sheet.createRow(0);
+ Row titleRow = sheet.createRow(0);
titleRow.setHeightInPoints(35);
for (int i = 1; i <= 7; i++) {
titleRow.createCell(i).setCellStyle(styles.get("title"));
}
- XSSFCell titleCell = titleRow.getCell(2);
+ Cell titleCell = titleRow.getCell(2);
titleCell.setCellValue("Simple Loan Calculator");
sheet.addMergedRegion(CellRangeAddress.valueOf("$C$1:$H$1"));
- XSSFRow row = sheet.createRow(2);
- XSSFCell cell = row.createCell(4);
+ Row row = sheet.createRow(2);
+ Cell cell = row.createCell(4);
cell.setCellValue("Enter values");
cell.setCellStyle(styles.get("item_right"));
@@ -73,6 +81,7 @@ public class LoanCalculator { cell.setCellStyle(styles.get("item_left"));
cell = row.createCell(4);
cell.setCellStyle(styles.get("input_$"));
+ cell.setAsActiveCell();
row = sheet.createRow(4);
cell = row.createCell(2);
@@ -127,10 +136,11 @@ public class LoanCalculator { cell.setCellFormula("IF(Values_Entered,Monthly_Payment*Number_of_Payments,\"\")");
cell.setCellStyle(styles.get("formula_$"));
- sheet.setActiveCell("E4");
// Write the output to a file
- FileOutputStream out = new FileOutputStream("loan-calculator.xlsx");
+ String file = "loan-calculator.xls";
+ if(wb instanceof XSSFWorkbook) file += "x";
+ FileOutputStream out = new FileOutputStream(file);
wb.write(out);
out.close();
}
@@ -138,126 +148,122 @@ public class LoanCalculator { /**
* cell styles used for formatting calendar sheets
*/
- private static Map<String, XSSFCellStyle> createStyles(XSSFWorkbook wb){
- Map<String, XSSFCellStyle> styles = new HashMap<String, XSSFCellStyle>();
+ private static Map<String, CellStyle> createStyles(Workbook wb){
+ Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
- XSSFCellStyle style;
- XSSFFont titleFont = wb.createFont();
+ CellStyle style;
+ Font titleFont = wb.createFont();
titleFont.setFontHeightInPoints((short)14);
titleFont.setFontName("Trebuchet MS");
style = wb.createCellStyle();
style.setFont(titleFont);
- style.setBorderBottom(BorderStyle.DOTTED);
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
styles.put("title", style);
- XSSFFont itemFont = wb.createFont();
+ Font itemFont = wb.createFont();
itemFont.setFontHeightInPoints((short)9);
itemFont.setFontName("Trebuchet MS");
style = wb.createCellStyle();
- style.setAlignment(HorizontalAlignment.LEFT);
+ style.setAlignment(CellStyle.ALIGN_LEFT);
style.setFont(itemFont);
styles.put("item_left", style);
style = wb.createCellStyle();
- style.setAlignment(HorizontalAlignment.RIGHT);
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
style.setFont(itemFont);
styles.put("item_right", style);
style = wb.createCellStyle();
- style.setAlignment(HorizontalAlignment.RIGHT);
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
style.setFont(itemFont);
- style.setBorderRight(BorderStyle.DOTTED);
+ style.setBorderRight(CellStyle.BORDER_DOTTED);
style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setBorderBottom(BorderStyle.DOTTED);
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setBorderLeft(BorderStyle.DOTTED);
+ style.setBorderLeft(CellStyle.BORDER_DOTTED);
style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setBorderTop(BorderStyle.DOTTED);
+ style.setBorderTop(CellStyle.BORDER_DOTTED);
style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
style.setDataFormat(wb.createDataFormat().getFormat("_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)"));
styles.put("input_$", style);
style = wb.createCellStyle();
- style.setAlignment(HorizontalAlignment.RIGHT);
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
style.setFont(itemFont);
- style.setBorderRight(BorderStyle.DOTTED);
+ style.setBorderRight(CellStyle.BORDER_DOTTED);
style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setBorderBottom(BorderStyle.DOTTED);
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setBorderLeft(BorderStyle.DOTTED);
+ style.setBorderLeft(CellStyle.BORDER_DOTTED);
style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setBorderTop(BorderStyle.DOTTED);
+ style.setBorderTop(CellStyle.BORDER_DOTTED);
style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
style.setDataFormat(wb.createDataFormat().getFormat("0.000%"));
styles.put("input_%", style);
style = wb.createCellStyle();
- style.setAlignment(HorizontalAlignment.RIGHT);
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
style.setFont(itemFont);
- style.setBorderRight(BorderStyle.DOTTED);
+ style.setBorderRight(CellStyle.BORDER_DOTTED);
style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setBorderBottom(BorderStyle.DOTTED);
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setBorderLeft(BorderStyle.DOTTED);
+ style.setBorderLeft(CellStyle.BORDER_DOTTED);
style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setBorderTop(BorderStyle.DOTTED);
+ style.setBorderTop(CellStyle.BORDER_DOTTED);
style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
style.setDataFormat(wb.createDataFormat().getFormat("0"));
styles.put("input_i", style);
style = wb.createCellStyle();
- style.setAlignment(HorizontalAlignment.CENTER);
+ style.setAlignment(CellStyle.ALIGN_CENTER);
style.setFont(itemFont);
style.setDataFormat(wb.createDataFormat().getFormat("m/d/yy"));
styles.put("input_d", style);
style = wb.createCellStyle();
- style.setAlignment(HorizontalAlignment.RIGHT);
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
style.setFont(itemFont);
- style.setBorderRight(BorderStyle.DOTTED);
+ style.setBorderRight(CellStyle.BORDER_DOTTED);
style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setBorderBottom(BorderStyle.DOTTED);
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setBorderLeft(BorderStyle.DOTTED);
+ style.setBorderLeft(CellStyle.BORDER_DOTTED);
style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setBorderTop(BorderStyle.DOTTED);
+ style.setBorderTop(CellStyle.BORDER_DOTTED);
style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
style.setDataFormat(wb.createDataFormat().getFormat("$##,##0.00"));
- style.setBorderBottom(BorderStyle.DOTTED);
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setFillForegroundColor(new XSSFColor(new java.awt.Color(234, 234, 234)));
- style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
styles.put("formula_$", style);
style = wb.createCellStyle();
- style.setAlignment(HorizontalAlignment.RIGHT);
+ style.setAlignment(CellStyle.ALIGN_RIGHT);
style.setFont(itemFont);
- style.setBorderRight(BorderStyle.DOTTED);
+ style.setBorderRight(CellStyle.BORDER_DOTTED);
style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setBorderBottom(BorderStyle.DOTTED);
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setBorderLeft(BorderStyle.DOTTED);
+ style.setBorderLeft(CellStyle.BORDER_DOTTED);
style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setBorderTop(BorderStyle.DOTTED);
+ style.setBorderTop(CellStyle.BORDER_DOTTED);
style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
style.setDataFormat(wb.createDataFormat().getFormat("0"));
- style.setBorderBottom(BorderStyle.DOTTED);
+ style.setBorderBottom(CellStyle.BORDER_DOTTED);
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
- style.setFillForegroundColor(new XSSFColor(new java.awt.Color(234, 234, 234)));
- style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
styles.put("formula_i", style);
return styles;
}
//define named ranges for the inputs and formulas
- public static void createNames(XSSFWorkbook wb){
- XSSFName name;
-
- name = wb.createName();
- name.setNameName("Header_Row");
- name.setReference("ROW('Loan Calculator'!#REF!)");
+ public static void createNames(Workbook wb){
+ Name name;
name = wb.createName();
name.setNameName("Interest_Rate");
@@ -268,10 +274,6 @@ public class LoanCalculator { name.setReference("'Loan Calculator'!$E$4");
name = wb.createName();
- name.setNameName("Loan_Not_Paid");
- name.setReference("F(Payment_Number<=Number_of_Payments,1,0)");
-
- name = wb.createName();
name.setNameName("Loan_Start");
name.setReference("'Loan Calculator'!$E$7");
@@ -280,20 +282,12 @@ public class LoanCalculator { name.setReference("'Loan Calculator'!$E$6");
name = wb.createName();
- name.setNameName("Monthly_Payment");
- name.setReference("-PMT(Interest_Rate/12,Number_of_Payments,Loan_Amount)");
-
- name = wb.createName();
name.setNameName("Number_of_Payments");
name.setReference("'Loan Calculator'!$E$10");
name = wb.createName();
- name.setNameName("Payment_Number");
- name.setReference("ROW()-Header_Row");
-
- name = wb.createName();
- name.setNameName("Principal");
- name.setReference("-PPMT(Interest_Rate/12,Payment_Number,Number_of_Payments,Loan_Amount)");
+ name.setNameName("Monthly_Payment");
+ name.setReference("-PMT(Interest_Rate/12,Number_of_Payments,Loan_Amount)");
name = wb.createName();
name.setNameName("Total_Cost");
@@ -306,7 +300,5 @@ public class LoanCalculator { name = wb.createName();
name.setNameName("Values_Entered");
name.setReference("IF(Loan_Amount*Interest_Rate*Loan_Years*Loan_Start>0,1,0)");
-
-
}
}
diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/TimesheetDemo.java b/src/examples/src/org/apache/poi/ss/examples/TimesheetDemo.java index 9c28e33aff..aa036f6747 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/TimesheetDemo.java +++ b/src/examples/src/org/apache/poi/ss/examples/TimesheetDemo.java @@ -14,11 +14,12 @@ See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-package org.apache.poi.xssf.usermodel.examples;
+package org.apache.poi.ss.examples;
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import java.util.Map;
import java.util.HashMap;
@@ -26,6 +27,8 @@ import java.io.FileOutputStream; /**
* A weekly timesheet created using Apache POI.
+ * Usage:
+ * TimesheetDemo -xls|xlsx
*
* @author Yegor Kozlov
*/
@@ -37,32 +40,35 @@ public class TimesheetDemo { private static Object[][] sample_data = {
{"Yegor Kozlov", "YK", 5.0, 8.0, 10.0, 5.0, 5.0, 7.0, 6.0},
- {"Gisella Bronsetti", "GB", 4.0, 3.0, 1.0, 3.5, null, null, 4.0},
+ {"Gisella Bronzetti", "GB", 4.0, 3.0, 1.0, 3.5, null, null, 4.0},
};
public static void main(String[] args) throws Exception {
+ Workbook wb;
- XSSFWorkbook wb = new XSSFWorkbook();
- Map<String, XSSFCellStyle> styles = createStyles(wb);
+ if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook();
+ else wb = new XSSFWorkbook();
- XSSFSheet sheet = wb.createSheet("Timesheet");
- XSSFPrintSetup printSetup = sheet.getPrintSetup();
- printSetup.setOrientation(PrintOrientation.LANDSCAPE);
+ Map<String, CellStyle> styles = createStyles(wb);
+
+ Sheet sheet = wb.createSheet("Timesheet");
+ PrintSetup printSetup = sheet.getPrintSetup();
+ printSetup.setLandscape(true);
sheet.setFitToPage(true);
sheet.setHorizontallyCenter(true);
//title row
- XSSFRow titleRow = sheet.createRow(0);
+ Row titleRow = sheet.createRow(0);
titleRow.setHeightInPoints(45);
- XSSFCell titleCell = titleRow.createCell(0);
+ Cell titleCell = titleRow.createCell(0);
titleCell.setCellValue("Weekly Timesheet");
titleCell.setCellStyle(styles.get("title"));
sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$L$1"));
//header row
- XSSFRow headerRow = sheet.createRow(1);
+ Row headerRow = sheet.createRow(1);
headerRow.setHeightInPoints(40);
- XSSFCell headerCell;
+ Cell headerCell;
for (int i = 0; i < titles.length; i++) {
headerCell = headerRow.createCell(i);
headerCell.setCellValue(titles[i]);
@@ -71,9 +77,9 @@ public class TimesheetDemo { int rownum = 2;
for (int i = 0; i < 10; i++) {
- XSSFRow row = sheet.createRow(rownum++);
+ Row row = sheet.createRow(rownum++);
for (int j = 0; j < titles.length; j++) {
- XSSFCell cell = row.createCell(j);
+ Cell cell = row.createCell(j);
if(j == 9){
//the 10th cell contains sum over week days, e.g. SUM(C3:I3)
String ref = "C" +rownum+ ":I" + rownum;
@@ -89,9 +95,9 @@ public class TimesheetDemo { }
//row with totals below
- XSSFRow sumRow = sheet.createRow(rownum++);
+ Row sumRow = sheet.createRow(rownum++);
sumRow.setHeightInPoints(35);
- XSSFCell cell;
+ Cell cell;
cell = sumRow.createCell(0);
cell.setCellStyle(styles.get("formula"));
cell = sumRow.createCell(1);
@@ -125,7 +131,7 @@ public class TimesheetDemo { //set sample data
for (int i = 0; i < sample_data.length; i++) {
- XSSFRow row = sheet.getRow(2 + i);
+ Row row = sheet.getRow(2 + i);
for (int j = 0; j < sample_data[i].length; j++) {
if(sample_data[i][j] == null) continue;
@@ -137,70 +143,74 @@ public class TimesheetDemo { }
}
- //finally set column widths
- sheet.setColumnWidth(0, 30*256);
+ //finally set column widths, the width is measured in units of 1/256th of a character width
+ sheet.setColumnWidth(0, 30*256); //30 characters wide
for (int i = 2; i < 9; i++) {
- sheet.setColumnWidth(i, 6*256);
+ sheet.setColumnWidth(i, 6*256); //6 characters wide
}
+ sheet.setColumnWidth(10, 10*256); //10 characters wide
// Write the output to a file
- FileOutputStream out = new FileOutputStream("ooxml-timesheet.xlsx");
+ String file = "timesheet.xls";
+ if(wb instanceof XSSFWorkbook) file += "x";
+ FileOutputStream out = new FileOutputStream(file);
wb.write(out);
out.close();
}
- private static Map<String, XSSFCellStyle> createStyles(XSSFWorkbook wb){
- Map<String, XSSFCellStyle> styles = new HashMap<String, XSSFCellStyle>();
- XSSFCellStyle style;
- XSSFFont titleFont = wb.createFont();
+ /**
+ * Create a library of cell styles
+ */
+ private static Map<String, CellStyle> createStyles(Workbook wb){
+ Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
+ CellStyle style;
+ Font titleFont = wb.createFont();
titleFont.setFontHeightInPoints((short)18);
- titleFont.setBold(true);
+ titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
style = wb.createCellStyle();
- style.setAlignment(HorizontalAlignment.CENTER);
- style.setVerticalAlignment(VerticalAlignment.CENTER);
- style.setFillForegroundColor(new XSSFColor(new java.awt.Color(234, 234, 234)));
- style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
style.setFont(titleFont);
styles.put("title", style);
- XSSFFont monthFont = wb.createFont();
+ Font monthFont = wb.createFont();
monthFont.setFontHeightInPoints((short)11);
- monthFont.setColor(new XSSFColor(new java.awt.Color(255, 255, 255)));
+ monthFont.setColor(IndexedColors.WHITE.getIndex());
style = wb.createCellStyle();
- style.setAlignment(HorizontalAlignment.CENTER);
- style.setVerticalAlignment(VerticalAlignment.CENTER);
- style.setFillForegroundColor(new XSSFColor(new java.awt.Color(102, 102, 102)));
- style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+ style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
style.setFont(monthFont);
style.setWrapText(true);
styles.put("header", style);
style = wb.createCellStyle();
- style.setAlignment(HorizontalAlignment.CENTER);
+ style.setAlignment(CellStyle.ALIGN_CENTER);
style.setWrapText(true);
- style.setBorderRight(BorderStyle.THIN);
+ style.setBorderRight(CellStyle.BORDER_THIN);
style.setRightBorderColor(IndexedColors.BLACK.getIndex());
- style.setBorderLeft(BorderStyle.THIN);
+ style.setBorderLeft(CellStyle.BORDER_THIN);
style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
- style.setBorderTop(BorderStyle.THIN);
+ style.setBorderTop(CellStyle.BORDER_THIN);
style.setTopBorderColor(IndexedColors.BLACK.getIndex());
- style.setBorderBottom(BorderStyle.THIN);
+ style.setBorderBottom(CellStyle.BORDER_THIN);
style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
styles.put("cell", style);
style = wb.createCellStyle();
- style.setAlignment(HorizontalAlignment.CENTER);
- style.setVerticalAlignment(VerticalAlignment.CENTER);
- style.setFillForegroundColor(new XSSFColor(new java.awt.Color(234, 234, 234)));
- style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+ style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
style.setDataFormat(wb.createDataFormat().getFormat("0.00"));
styles.put("formula", style);
style = wb.createCellStyle();
- style.setAlignment(HorizontalAlignment.CENTER);
- style.setVerticalAlignment(VerticalAlignment.CENTER);
- style.setFillForegroundColor(new XSSFColor(new java.awt.Color(192, 192, 192)));
- style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+ style.setAlignment(CellStyle.ALIGN_CENTER);
+ style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+ style.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());
+ style.setFillPattern(CellStyle.SOLID_FOREGROUND);
style.setDataFormat(wb.createDataFormat().getFormat("0.00"));
styles.put("formula_2", style);
diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/CalendarDemo.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/CalendarDemo.java index 52dcaed517..ffdcf37351 100755 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/CalendarDemo.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/CalendarDemo.java @@ -27,6 +27,9 @@ import java.util.HashMap; /**
* A monthly calendar created using Apache POI. Each month is on a separate sheet.
+ * This is a version of org.apache.poi.ss.examples.CalendarDemo that demonstrates
+ * some XSSF features not avaiable when using common HSSF-XSSF interfaces.
+ *
* <pre>
* Usage:
* CalendarDemo <year>
diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java index 82277661ae..ae50f43765 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java @@ -509,8 +509,7 @@ public class HSSFCell implements Cell { } /** - * set a string value for the cell. Please note that if you are using - * full 16 bit unicode you should call <code>setEncoding()</code> first. + * Set a string value for the cell. * * @param value value to set the cell to. For formulas we'll set the formula * string, for String cells we'll set its value. For other types we will diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java index 5733bbcf37..e6e9ac9b46 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java @@ -1626,6 +1626,12 @@ public class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet sheet.groupColumnRange(fromColumn, toColumn, false); } + /** + * Tie a range of cell together so that they can be collapsed or expanded + * + * @param fromRow start row (0-based) + * @param toRow end row (0-based) + */ public void groupRow(int fromRow, int toRow) { sheet.groupRowRange( fromRow, toRow, true ); diff --git a/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Cell.java b/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Cell.java index 4e132dafbd..a315493781 100644 --- a/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Cell.java +++ b/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Cell.java @@ -145,21 +145,33 @@ public interface Cell { void setCellValue(Calendar value); /** - * set a string value for the cell. Please note that if you are using - * full 16 bit unicode you should call <code>setEncoding()</code> first. + * Set a rich string value for the cell. * * @param value value to set the cell to. For formulas we'll set the formula * string, for String cells we'll set its value. For other types we will * change the cell to a string cell and set its value. * If value is null then we will change the cell to a Blank cell. */ - void setCellValue(RichTextString value); + /** + * Set a string value for the cell. + * + * @param value value to set the cell to. For formulas we'll set the formula + * string, for String cells we'll set its value. For other types we will + * change the cell to a string cell and set its value. + * If value is null then we will change the cell to a Blank cell. + */ void setCellValue(String value); + /** + * Set a formula value for the cell. + */ void setCellFormula(String formula); + /** + * Get the formula value of the cell. + */ String getCellFormula(); /** diff --git a/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Sheet.java b/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Sheet.java index 12c6a6a0c1..bd500d56ae 100644 --- a/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Sheet.java +++ b/src/ooxml/interfaces-jdk15/org/apache/poi/ss/usermodel/Sheet.java @@ -409,7 +409,6 @@ public interface Sheet extends Iterable<Row> { * Additionally shifts merged regions that are completely defined in these * rows (ie. merged 2 cells on a row to be shifted). * <p> - * TODO Might want to add bounds checking here * @param startRow the row to start shifting * @param endRow the row to end shifting * @param n the number of rows to shift @@ -542,14 +541,6 @@ public interface Sheet extends Iterable<Row> { void removeColumnBreak(short column); /** - * Creates the toplevel drawing patriarch. This will have the effect of - * removing any existing drawings on this sheet. - * - * @return The new patriarch. - */ - //Patriarch createDrawingPatriarch(); - - /** * Expands or collapses a column group. * * @param columnNumber One of the columns in the group. @@ -567,10 +558,28 @@ public interface Sheet extends Iterable<Row> { void ungroupColumn(short fromColumn, short toColumn); + /** + * Tie a range of rows together so that they can be collapsed or expanded + * + * @param fromRow start row (0-based) + * @param toRow end row (0-based) + */ void groupRow(int fromRow, int toRow); + /** + * Ungroup a range of rows that were previously groupped + * + * @param fromRow start row (0-based) + * @param toRow end row (0-based) + */ void ungroupRow(int fromRow, int toRow); + /** + * Set view state of a groupped range of rows + * + * @param row start row of a groupped range of rows (0-based) + * @param collapse whether to expand/collapse the detail rows + */ void setRowGroupCollapsed(int row, boolean collapse); /** @@ -599,6 +608,11 @@ public interface Sheet extends Iterable<Row> { */ Comment getCellComment(int row, int column); + /** + * Creates the top-level drawing patriarch. + * + * @return The new drawing patriarch. + */ Drawing createDrawingPatriarch(); } diff --git a/src/ooxml/java/org/apache/poi/xssf/dev/XSSFSave.java b/src/ooxml/java/org/apache/poi/xssf/dev/XSSFSave.java index 148a02fcb2..10a4b4755e 100755 --- a/src/ooxml/java/org/apache/poi/xssf/dev/XSSFSave.java +++ b/src/ooxml/java/org/apache/poi/xssf/dev/XSSFSave.java @@ -32,7 +32,7 @@ public class XSSFSave { XSSFWorkbook wb = new XSSFWorkbook(args[i]);
int sep = args[i].lastIndexOf('.');
- String outfile = args[i].substring(0, sep) + "-save.xlsx";
+ String outfile = args[i].substring(0, sep) + "-save.xls" + (wb.isMacroEnabled() ? "m" : "x");
FileOutputStream out = new FileOutputStream(outfile);
wb.write(out);
out.close();
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index 24a3f252f0..7613c87cf1 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -952,20 +952,26 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { setSheetFormatPrOutlineLevelCol(); } + /** + * Tie a range of cell together so that they can be collapsed or expanded + * + * @param fromRow start row (0-based) + * @param toRow end row (0-based) + */ public void groupRow(int fromRow, int toRow) { - for(int i=fromRow;i<=toRow;i++){ - XSSFRow xrow = getRow(i-1); - if(xrow == null){//create a new Row - xrow = createRow(i-1); + for (int i = fromRow; i <= toRow; i++) { + XSSFRow xrow = getRow(i); + if (xrow == null) { + xrow = createRow(i); } - CTRow ctrow=xrow.getCTRow(); - short outlineLevel=ctrow.getOutlineLevel(); - ctrow.setOutlineLevel((short)(outlineLevel+1)); - } - setSheetFormatPrOutlineLevelRow(); + CTRow ctrow = xrow.getCTRow(); + short outlineLevel = ctrow.getOutlineLevel(); + ctrow.setOutlineLevel((short) (outlineLevel + 1)); + } + setSheetFormatPrOutlineLevelRow(); } - private short getMaxOutlineLevelRows(){ + private short getMaxOutlineLevelRows(){ short outlineLevel=0; for(Row r : rows.values()){ XSSFRow xrow=(XSSFRow)r; @@ -1478,9 +1484,15 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { setSheetFormatPrOutlineLevelCol(); } + /** + * Ungroup a range of rows that were previously groupped + * + * @param fromRow start row (0-based) + * @param toRow end row (0-based) + */ public void ungroupRow(int fromRow, int toRow) { for (int i = fromRow; i <= toRow; i++) { - XSSFRow xrow = getRow(i - 1); + XSSFRow xrow = getRow(i); if (xrow != null) { CTRow ctrow = xrow.getCTRow(); short outlinelevel = ctrow.getOutlineLevel(); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java index 62d2b7d989..dd0446c9dd 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java @@ -789,19 +789,19 @@ public class TestXSSFSheet extends TestCase { //one level sheet.groupRow(9,10); assertEquals(2,sheet.getPhysicalNumberOfRows()); - CTRow ctrow = sheet.getRow(8).getCTRow(); + CTRow ctrow = sheet.getRow(9).getCTRow(); assertNotNull(ctrow); - assertEquals(9,ctrow.getR()); + assertEquals(10,ctrow.getR()); assertEquals(1, ctrow.getOutlineLevel()); assertEquals(1,sheet.getCTWorksheet().getSheetFormatPr().getOutlineLevelRow()); //two level sheet.groupRow(10,13); assertEquals(5,sheet.getPhysicalNumberOfRows()); - ctrow = sheet.getRow(9).getCTRow(); + ctrow = sheet.getRow(10).getCTRow(); assertNotNull(ctrow); - assertEquals(10,ctrow.getR()); + assertEquals(11,ctrow.getR()); assertEquals(2, ctrow.getOutlineLevel()); assertEquals(2,sheet.getCTWorksheet().getSheetFormatPr().getOutlineLevelRow()); diff --git a/src/examples/src/org/apache/poi/hslf/usermodel/examples/SoundFinder.java b/src/scratchpad/examples/src/org/apache/poi/hslf/examples/SoundFinder.java index 800a4952c8..b31019db94 100644 --- a/src/examples/src/org/apache/poi/hslf/usermodel/examples/SoundFinder.java +++ b/src/scratchpad/examples/src/org/apache/poi/hslf/examples/SoundFinder.java @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ -package org.apache.poi.hslf.usermodel.examples; +package org.apache.poi.hslf.examples; import org.apache.poi.ddf.*; import org.apache.poi.hslf.model.*; import org.apache.poi.hslf.record.InteractiveInfo; diff --git a/src/testcases/org/apache/poi/hpsf/basic/TestMetaDataIPI.java b/src/testcases/org/apache/poi/hpsf/basic/TestMetaDataIPI.java index fa7a093c0e..111561bcc1 100644 --- a/src/testcases/org/apache/poi/hpsf/basic/TestMetaDataIPI.java +++ b/src/testcases/org/apache/poi/hpsf/basic/TestMetaDataIPI.java @@ -286,7 +286,7 @@ public class TestMetaDataIPI extends TestCase{ /* Insert some custom properties into the container. */ customProperties.put("Key1", "Value1"); - customProperties.put("Schl�ssel2", "Wert2"); + customProperties.put("Schl\u00fcssel2", "Wert2"); customProperties.put("Sample Integer", new Integer(12345)); customProperties.put("Sample Boolean", new Boolean(true)); Date date=new Date(); @@ -325,8 +325,8 @@ public class TestMetaDataIPI extends TestCase{ /* Insert some custom properties into the container. */ String a1=(String) customProperties.get("Key1"); assertEquals("Key1","Value1",a1); - String a2=(String) customProperties.get("Schl�ssel2"); - assertEquals("Schl�ssel2","Wert2",a2); + String a2=(String) customProperties.get("Schl\u00fcssel2"); + assertEquals("Schl\u00fcssel2","Wert2",a2); Integer a3=(Integer) customProperties.get("Sample Integer"); assertEquals("Sample Number",new Integer(12345),a3); Boolean a4=(Boolean) customProperties.get("Sample Boolean"); @@ -431,7 +431,7 @@ public void testTwo(){ String a1=(String) customProperties.get(k1); assertEquals("Key1",p1,a1); String a2=(String) customProperties.get(k2); - assertEquals("Schl�ssel2",p2,a2); + assertEquals("Schl\u00fcssel2",p2,a2); Integer a3=(Integer) customProperties.get("Sample Number"); assertEquals("Sample Number",new Integer(12345),a3); Boolean a4=(Boolean) customProperties.get("Sample Boolean"); @@ -450,7 +450,7 @@ public void testTwo(){ */ public String strangize(String s){ StringBuffer sb=new StringBuffer(); - String[] umlaute= {"�","�","�","�","$","�","�","�","�","@","�","&"}; + String[] umlaute= {"\u00e4","\u00fc","\u00f6","\u00dc","$","\u00d6","\u00dc","\u00c9","\u00d6","@","\u00e7","&"}; char j=0; Random rand=new Random(); for (int i=0;i<5;i++){ @@ -544,7 +544,7 @@ public void testThree(){ String a1=(String) customProperties.get(k1); assertEquals("Key1",p1,a1); String a2=(String) customProperties.get(k2); - assertEquals("Schl�ssel2",p2,a2); + assertEquals("Schl\u00fcssel2",p2,a2); Integer a3=(Integer) customProperties.get("Sample Number"); assertEquals("Sample Number",new Integer(12345),a3); Boolean a4=(Boolean) customProperties.get("Sample Boolean"); @@ -577,7 +577,7 @@ public void testThree(){ public String strangizeU(String s){ StringBuffer sb=new StringBuffer(); - String[] umlaute= {"�","�","�","�","$","�","�","�","�","@","�","&"}; + String[] umlaute= {"\u00e4","\u00fc","\u00f6","\u00dc","$","\u00d6","\u00dc","\u00c9","\u00d6","@","\u00e7","&"}; char j=0; Random rand=new Random(); for (int i=0;i<5;i++){ @@ -592,7 +592,7 @@ public void testThree(){ sb.append(umlaute[rand.nextInt(umlaute.length)]); sb.append("<"); } - sb.append("���\uD840\uDC00"); + sb.append("\u00e4\u00f6\u00fc\uD840\uDC00"); return sb.toString(); } /** @@ -668,7 +668,7 @@ public void testThree(){ String a1=(String) customProperties.get(k1); assertEquals("Key1",p1,a1); String a2=(String) customProperties.get(k2); - assertEquals("Schl�ssel2",p2,a2); + assertEquals("Schl\u00fcssel2",p2,a2); Integer a3=(Integer) customProperties.get("Sample Number"); assertEquals("Sample Number",new Integer(12345),a3); Boolean a4=(Boolean) customProperties.get("Sample Boolean"); diff --git a/src/testcases/org/apache/poi/hpsf/basic/TestWriteWellKnown.java b/src/testcases/org/apache/poi/hpsf/basic/TestWriteWellKnown.java index 8d22157a98..375cc904ef 100644 --- a/src/testcases/org/apache/poi/hpsf/basic/TestWriteWellKnown.java +++ b/src/testcases/org/apache/poi/hpsf/basic/TestWriteWellKnown.java @@ -120,7 +120,6 @@ public class TestWriteWellKnown extends TestCase for (int i = 0; i < docs.length; i++) { final File doc = docs[i]; - System.out.println("Reading file " + doc); /* Read a test document <em>doc</em> into a POI filesystem. */ final POIFSFileSystem poifs = new POIFSFileSystem(new FileInputStream(doc)); @@ -351,10 +350,10 @@ public class TestWriteWellKnown extends TestCase CustomProperties customProperties = dsi.getCustomProperties(); if (customProperties == null) customProperties = new CustomProperties(); - customProperties.put("Schl\u00fcssel �", "Wert �"); - customProperties.put("Schl\u00fcssel ��", "Wert ��"); - customProperties.put("Schl\u00fcssel ���", "Wert ���"); - customProperties.put("Schl\u00fcssel ����", "Wert ����"); + customProperties.put("Schl\u00fcssel \u00e4", "Wert \u00e4"); + customProperties.put("Schl\u00fcssel \u00e4\u00f6", "Wert \u00e4\u00f6"); + customProperties.put("Schl\u00fcssel \u00e4\u00f6\u00fc", "Wert \u00e4\u00f6\u00fc"); + customProperties.put("Schl\u00fcssel \u00e4\u00f6\u00fc\u00d6", "Wert \u00e4\u00f6\u00fc\u00d6"); customProperties.put("positive_Integer", POSITIVE_INTEGER); customProperties.put("positive_Long", POSITIVE_LONG); customProperties.put("positive_Double", POSITIVE_DOUBLE); @@ -440,10 +439,10 @@ public class TestWriteWellKnown extends TestCase final CustomProperties cps = dsi.getCustomProperties(); assertEquals(customProperties, cps); assertNull(cps.get("No value available")); - assertEquals("Wert �", cps.get("Schl\u00fcssel �")); - assertEquals("Wert ��", cps.get("Schl\u00fcssel ��")); - assertEquals("Wert ���", cps.get("Schl\u00fcssel ���")); - assertEquals("Wert ����", cps.get("Schl\u00fcssel ����")); + assertEquals("Wert \u00e4", cps.get("Schl\u00fcssel \u00e4")); + assertEquals("Wert \u00e4\u00f6", cps.get("Schl\u00fcssel \u00e4\u00f6")); + assertEquals("Wert \u00e4\u00f6\u00fc", cps.get("Schl\u00fcssel \u00e4\u00f6\u00fc")); + assertEquals("Wert \u00e4\u00f6\u00fc\u00d6", cps.get("Schl\u00fcssel \u00e4\u00f6\u00fc\u00d6")); assertEquals(POSITIVE_INTEGER, cps.get("positive_Integer")); assertEquals(POSITIVE_LONG, cps.get("positive_Long")); assertEquals(POSITIVE_DOUBLE, cps.get("positive_Double")); @@ -665,7 +664,7 @@ public class TestWriteWellKnown extends TestCase */ public void testCustomerProperties() { - final String KEY = "Schl\u00fcssel �"; + final String KEY = "Schl\u00fcssel \u00e4"; final String VALUE_1 = "Wert 1"; final String VALUE_2 = "Wert 2"; @@ -705,7 +704,7 @@ public class TestWriteWellKnown extends TestCase { final int ID_1 = 2; final int ID_2 = 3; - final String NAME_1 = "Schl\u00fcssel �"; + final String NAME_1 = "Schl\u00fcssel \u00e4"; final String VALUE_1 = "Wert 1"; final Map dictionary = new HashMap(); |