Changed CRLF to LF in remaining trunk/src files
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@780878 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
dd7e611bda
commit
522d5c6892
@ -1,89 +1,89 @@
|
||||
/* ====================================================================
|
||||
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.examples;
|
||||
|
||||
import org.apache.poi.hssf.usermodel.*;
|
||||
import org.apache.poi.hssf.util.HSSFColor;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.FileOutputStream;
|
||||
|
||||
/**
|
||||
* Demonstrates how to create hyperlinks.
|
||||
*
|
||||
* @author Yegor Kozlov (yegor at apach.org)
|
||||
*/
|
||||
public class Hyperlinks {
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
HSSFWorkbook wb = new HSSFWorkbook();
|
||||
|
||||
//cell style for hyperlinks
|
||||
//by default hyperlinks are blue and underlined
|
||||
HSSFCellStyle hlink_style = wb.createCellStyle();
|
||||
HSSFFont hlink_font = wb.createFont();
|
||||
hlink_font.setUnderline(HSSFFont.U_SINGLE);
|
||||
hlink_font.setColor(HSSFColor.BLUE.index);
|
||||
hlink_style.setFont(hlink_font);
|
||||
|
||||
HSSFCell cell;
|
||||
HSSFSheet sheet = wb.createSheet("Hyperlinks");
|
||||
|
||||
//URL
|
||||
cell = sheet.createRow(0).createCell(0);
|
||||
cell.setCellValue("URL Link");
|
||||
HSSFHyperlink link = new HSSFHyperlink(HSSFHyperlink.LINK_URL);
|
||||
link.setAddress("http://poi.apache.org/");
|
||||
cell.setHyperlink(link);
|
||||
cell.setCellStyle(hlink_style);
|
||||
|
||||
//link to a file in the current directory
|
||||
cell = sheet.createRow(1).createCell(0);
|
||||
cell.setCellValue("File Link");
|
||||
link = new HSSFHyperlink(HSSFHyperlink.LINK_FILE);
|
||||
link.setAddress("link1.xls");
|
||||
cell.setHyperlink(link);
|
||||
cell.setCellStyle(hlink_style);
|
||||
|
||||
//e-mail link
|
||||
cell = sheet.createRow(2).createCell(0);
|
||||
cell.setCellValue("Email Link");
|
||||
link = new HSSFHyperlink(HSSFHyperlink.LINK_EMAIL);
|
||||
//note, if subject contains white spaces, make sure they are url-encoded
|
||||
link.setAddress("mailto:poi@apache.org?subject=Hyperlinks");
|
||||
cell.setHyperlink(link);
|
||||
cell.setCellStyle(hlink_style);
|
||||
|
||||
//link to a place in this workbook
|
||||
|
||||
//create a target sheet and cell
|
||||
HSSFSheet sheet2 = wb.createSheet("Target Sheet");
|
||||
sheet2.createRow(0).createCell(0).setCellValue("Target Cell");
|
||||
|
||||
cell = sheet.createRow(3).createCell(0);
|
||||
cell.setCellValue("Worksheet Link");
|
||||
link = new HSSFHyperlink(HSSFHyperlink.LINK_DOCUMENT);
|
||||
link.setAddress("'Target Sheet'!A1");
|
||||
cell.setHyperlink(link);
|
||||
cell.setCellStyle(hlink_style);
|
||||
|
||||
FileOutputStream out = new FileOutputStream("hssf-links.xls");
|
||||
wb.write(out);
|
||||
out.close();
|
||||
}
|
||||
}
|
||||
/* ====================================================================
|
||||
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.examples;
|
||||
|
||||
import org.apache.poi.hssf.usermodel.*;
|
||||
import org.apache.poi.hssf.util.HSSFColor;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.FileOutputStream;
|
||||
|
||||
/**
|
||||
* Demonstrates how to create hyperlinks.
|
||||
*
|
||||
* @author Yegor Kozlov (yegor at apach.org)
|
||||
*/
|
||||
public class Hyperlinks {
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
HSSFWorkbook wb = new HSSFWorkbook();
|
||||
|
||||
//cell style for hyperlinks
|
||||
//by default hyperlinks are blue and underlined
|
||||
HSSFCellStyle hlink_style = wb.createCellStyle();
|
||||
HSSFFont hlink_font = wb.createFont();
|
||||
hlink_font.setUnderline(HSSFFont.U_SINGLE);
|
||||
hlink_font.setColor(HSSFColor.BLUE.index);
|
||||
hlink_style.setFont(hlink_font);
|
||||
|
||||
HSSFCell cell;
|
||||
HSSFSheet sheet = wb.createSheet("Hyperlinks");
|
||||
|
||||
//URL
|
||||
cell = sheet.createRow(0).createCell(0);
|
||||
cell.setCellValue("URL Link");
|
||||
HSSFHyperlink link = new HSSFHyperlink(HSSFHyperlink.LINK_URL);
|
||||
link.setAddress("http://poi.apache.org/");
|
||||
cell.setHyperlink(link);
|
||||
cell.setCellStyle(hlink_style);
|
||||
|
||||
//link to a file in the current directory
|
||||
cell = sheet.createRow(1).createCell(0);
|
||||
cell.setCellValue("File Link");
|
||||
link = new HSSFHyperlink(HSSFHyperlink.LINK_FILE);
|
||||
link.setAddress("link1.xls");
|
||||
cell.setHyperlink(link);
|
||||
cell.setCellStyle(hlink_style);
|
||||
|
||||
//e-mail link
|
||||
cell = sheet.createRow(2).createCell(0);
|
||||
cell.setCellValue("Email Link");
|
||||
link = new HSSFHyperlink(HSSFHyperlink.LINK_EMAIL);
|
||||
//note, if subject contains white spaces, make sure they are url-encoded
|
||||
link.setAddress("mailto:poi@apache.org?subject=Hyperlinks");
|
||||
cell.setHyperlink(link);
|
||||
cell.setCellStyle(hlink_style);
|
||||
|
||||
//link to a place in this workbook
|
||||
|
||||
//create a target sheet and cell
|
||||
HSSFSheet sheet2 = wb.createSheet("Target Sheet");
|
||||
sheet2.createRow(0).createCell(0).setCellValue("Target Cell");
|
||||
|
||||
cell = sheet.createRow(3).createCell(0);
|
||||
cell.setCellValue("Worksheet Link");
|
||||
link = new HSSFHyperlink(HSSFHyperlink.LINK_DOCUMENT);
|
||||
link.setAddress("'Target Sheet'!A1");
|
||||
cell.setHyperlink(link);
|
||||
cell.setCellStyle(hlink_style);
|
||||
|
||||
FileOutputStream out = new FileOutputStream("hssf-links.xls");
|
||||
wb.write(out);
|
||||
out.close();
|
||||
}
|
||||
}
|
||||
|
@ -1,324 +1,325 @@
|
||||
/* ====================================================================
|
||||
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.usermodel.*;
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
import java.util.Calendar;
|
||||
import java.io.FileOutputStream;
|
||||
import java.text.SimpleDateFormat;
|
||||
|
||||
/**
|
||||
* A business plan demo
|
||||
* Usage:
|
||||
* BusinessPlan -xls|xlsx
|
||||
*
|
||||
* @author Yegor Kozlov
|
||||
*/
|
||||
public class BusinessPlan {
|
||||
|
||||
private static SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM");
|
||||
|
||||
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", "J. Dow", "70", "9-Jul", null,
|
||||
"x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x"},
|
||||
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", "J. Dow", "3", "9-Jul", null,
|
||||
"x", null, null, null, null, null, null, null, null, null, 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", "J. Dow", "2", "15-Jul", null,
|
||||
"x", "x", null, null, null, null, null, null, null, null, null},
|
||||
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", "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. 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. Jones", "4", "26-Jul", null,
|
||||
null, null, "x", "x", null, null, null, null, null, null, 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", "J. Dow", "1", "6-Aug", null,
|
||||
null, null, null, null, "x", null, null, null, null, null, null},
|
||||
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", "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", "G. Lee", "2", "11-Aug", null,
|
||||
null, null, null, null, "x", "x", null, null, null, null, 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 {
|
||||
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("Business Plan");
|
||||
|
||||
//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(12.75f);
|
||||
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++) {
|
||||
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);
|
||||
|
||||
Row row;
|
||||
Cell cell;
|
||||
int rownum = 1;
|
||||
for (int i = 0; i < data.length; i++, rownum++) {
|
||||
row = sheet.createRow(rownum);
|
||||
if(data[i] == null) continue;
|
||||
|
||||
for (int j = 0; j < data[i].length; j++) {
|
||||
cell = row.createCell(j);
|
||||
String styleName;
|
||||
boolean isHeader = i == 0 || data[i-1] == null;
|
||||
switch(j){
|
||||
case 0:
|
||||
if(isHeader) {
|
||||
styleName = "cell_b";
|
||||
cell.setCellValue(Double.parseDouble(data[i][j]));
|
||||
} else {
|
||||
styleName = "cell_normal";
|
||||
cell.setCellValue(data[i][j]);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if(isHeader) {
|
||||
styleName = i == 0 ? "cell_h" : "cell_bb";
|
||||
} else {
|
||||
styleName = "cell_indented";
|
||||
}
|
||||
cell.setCellValue(data[i][j]);
|
||||
break;
|
||||
case 2:
|
||||
styleName = isHeader ? "cell_b" : "cell_normal";
|
||||
cell.setCellValue(data[i][j]);
|
||||
break;
|
||||
case 3:
|
||||
styleName = isHeader ? "cell_b_centered" : "cell_normal_centered";
|
||||
cell.setCellValue(Integer.parseInt(data[i][j]));
|
||||
break;
|
||||
case 4: {
|
||||
calendar.setTime(fmt.parse(data[i][j]));
|
||||
calendar.set(Calendar.YEAR, year);
|
||||
cell.setCellValue(calendar);
|
||||
styleName = isHeader ? "cell_b_date" : "cell_normal_date";
|
||||
break;
|
||||
}
|
||||
case 5: {
|
||||
int r = rownum + 1;
|
||||
String fmla = "IF(AND(D"+r+",E"+r+"),E"+r+"+D"+r+",\"\")";
|
||||
cell.setCellFormula(fmla);
|
||||
styleName = isHeader ? "cell_bg" : "cell_g";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
styleName = data[i][j] != null ? "cell_blue" : "cell_normal";
|
||||
}
|
||||
|
||||
cell.setCellStyle(styles.get(styleName));
|
||||
}
|
||||
}
|
||||
|
||||
//group rows for each phase, row numbers are 0-based
|
||||
sheet.groupRow(4, 6);
|
||||
sheet.groupRow(9, 13);
|
||||
sheet.groupRow(16, 18);
|
||||
|
||||
//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(3, 4);
|
||||
|
||||
|
||||
// Write the output to a file
|
||||
String file = "businessplan.xls";
|
||||
if(wb instanceof XSSFWorkbook) file += "x";
|
||||
FileOutputStream out = new FileOutputStream(file);
|
||||
wb.write(out);
|
||||
out.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* create a library of cell styles
|
||||
*/
|
||||
private static Map<String, CellStyle> createStyles(Workbook wb){
|
||||
Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
|
||||
DataFormat df = wb.createDataFormat();
|
||||
|
||||
CellStyle style;
|
||||
Font headerFont = wb.createFont();
|
||||
headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
|
||||
style = createBorderedStyle(wb);
|
||||
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(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);
|
||||
|
||||
Font font1 = wb.createFont();
|
||||
font1.setBoldweight(Font.BOLDWEIGHT_BOLD);
|
||||
style = createBorderedStyle(wb);
|
||||
style.setAlignment(CellStyle.ALIGN_LEFT);
|
||||
style.setFont(font1);
|
||||
styles.put("cell_b", style);
|
||||
|
||||
style = createBorderedStyle(wb);
|
||||
style.setAlignment(CellStyle.ALIGN_CENTER);
|
||||
style.setFont(font1);
|
||||
styles.put("cell_b_centered", style);
|
||||
|
||||
style = createBorderedStyle(wb);
|
||||
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(CellStyle.ALIGN_RIGHT);
|
||||
style.setFont(font1);
|
||||
style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
|
||||
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
|
||||
style.setDataFormat(df.getFormat("d-mmm"));
|
||||
styles.put("cell_g", style);
|
||||
|
||||
Font font2 = wb.createFont();
|
||||
font2.setColor(IndexedColors.BLUE.getIndex());
|
||||
font2.setBoldweight(Font.BOLDWEIGHT_BOLD);
|
||||
style = createBorderedStyle(wb);
|
||||
style.setAlignment(CellStyle.ALIGN_LEFT);
|
||||
style.setFont(font2);
|
||||
styles.put("cell_bb", style);
|
||||
|
||||
style = createBorderedStyle(wb);
|
||||
style.setAlignment(CellStyle.ALIGN_RIGHT);
|
||||
style.setFont(font1);
|
||||
style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
|
||||
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
|
||||
style.setDataFormat(df.getFormat("d-mmm"));
|
||||
styles.put("cell_bg", style);
|
||||
|
||||
Font font3 = wb.createFont();
|
||||
font3.setFontHeightInPoints((short)14);
|
||||
font3.setColor(IndexedColors.DARK_BLUE.getIndex());
|
||||
font3.setBoldweight(Font.BOLDWEIGHT_BOLD);
|
||||
style = createBorderedStyle(wb);
|
||||
style.setAlignment(CellStyle.ALIGN_LEFT);
|
||||
style.setFont(font3);
|
||||
style.setWrapText(true);
|
||||
styles.put("cell_h", style);
|
||||
|
||||
style = createBorderedStyle(wb);
|
||||
style.setAlignment(CellStyle.ALIGN_LEFT);
|
||||
style.setWrapText(true);
|
||||
styles.put("cell_normal", style);
|
||||
|
||||
style = createBorderedStyle(wb);
|
||||
style.setAlignment(CellStyle.ALIGN_CENTER);
|
||||
style.setWrapText(true);
|
||||
styles.put("cell_normal_centered", style);
|
||||
|
||||
style = createBorderedStyle(wb);
|
||||
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(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(CellStyle.SOLID_FOREGROUND);
|
||||
styles.put("cell_blue", style);
|
||||
|
||||
return styles;
|
||||
}
|
||||
|
||||
private static CellStyle createBorderedStyle(Workbook wb){
|
||||
CellStyle style = wb.createCellStyle();
|
||||
style.setBorderRight(CellStyle.BORDER_THIN);
|
||||
style.setRightBorderColor(IndexedColors.BLACK.getIndex());
|
||||
style.setBorderBottom(CellStyle.BORDER_THIN);
|
||||
style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
|
||||
style.setBorderLeft(CellStyle.BORDER_THIN);
|
||||
style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
|
||||
style.setBorderTop(CellStyle.BORDER_THIN);
|
||||
style.setTopBorderColor(IndexedColors.BLACK.getIndex());
|
||||
return style;
|
||||
}
|
||||
}
|
||||
/* ====================================================================
|
||||
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.usermodel.*;
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
import java.util.Calendar;
|
||||
import java.io.FileOutputStream;
|
||||
import java.text.SimpleDateFormat;
|
||||
|
||||
/**
|
||||
* A business plan demo
|
||||
* Usage:
|
||||
* BusinessPlan -xls|xlsx
|
||||
*
|
||||
* @author Yegor Kozlov
|
||||
*/
|
||||
public class BusinessPlan {
|
||||
|
||||
private static SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM");
|
||||
|
||||
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", "J. Dow", "70", "9-Jul", null,
|
||||
"x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x"},
|
||||
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", "J. Dow", "3", "9-Jul", null,
|
||||
"x", null, null, null, null, null, null, null, null, null, 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", "J. Dow", "2", "15-Jul", null,
|
||||
"x", "x", null, null, null, null, null, null, null, null, null},
|
||||
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", "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. 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. Jones", "4", "26-Jul", null,
|
||||
null, null, "x", "x", null, null, null, null, null, null, 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", "J. Dow", "1", "6-Aug", null,
|
||||
null, null, null, null, "x", null, null, null, null, null, null},
|
||||
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", "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", "G. Lee", "2", "11-Aug", null,
|
||||
null, null, null, null, "x", "x", null, null, null, null, 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 {
|
||||
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("Business Plan");
|
||||
|
||||
//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(12.75f);
|
||||
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++) {
|
||||
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);
|
||||
|
||||
Row row;
|
||||
Cell cell;
|
||||
int rownum = 1;
|
||||
for (int i = 0; i < data.length; i++, rownum++) {
|
||||
row = sheet.createRow(rownum);
|
||||
if(data[i] == null) continue;
|
||||
|
||||
for (int j = 0; j < data[i].length; j++) {
|
||||
cell = row.createCell(j);
|
||||
String styleName;
|
||||
boolean isHeader = i == 0 || data[i-1] == null;
|
||||
switch(j){
|
||||
case 0:
|
||||
if(isHeader) {
|
||||
styleName = "cell_b";
|
||||
cell.setCellValue(Double.parseDouble(data[i][j]));
|
||||
} else {
|
||||
styleName = "cell_normal";
|
||||
cell.setCellValue(data[i][j]);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if(isHeader) {
|
||||
styleName = i == 0 ? "cell_h" : "cell_bb";
|
||||
} else {
|
||||
styleName = "cell_indented";
|
||||
}
|
||||
cell.setCellValue(data[i][j]);
|
||||
break;
|
||||
case 2:
|
||||
styleName = isHeader ? "cell_b" : "cell_normal";
|
||||
cell.setCellValue(data[i][j]);
|
||||
break;
|
||||
case 3:
|
||||
styleName = isHeader ? "cell_b_centered" : "cell_normal_centered";
|
||||
cell.setCellValue(Integer.parseInt(data[i][j]));
|
||||
break;
|
||||
case 4: {
|
||||
calendar.setTime(fmt.parse(data[i][j]));
|
||||
calendar.set(Calendar.YEAR, year);
|
||||
cell.setCellValue(calendar);
|
||||
styleName = isHeader ? "cell_b_date" : "cell_normal_date";
|
||||
break;
|
||||
}
|
||||
case 5: {
|
||||
int r = rownum + 1;
|
||||
String fmla = "IF(AND(D"+r+",E"+r+"),E"+r+"+D"+r+",\"\")";
|
||||
cell.setCellFormula(fmla);
|
||||
styleName = isHeader ? "cell_bg" : "cell_g";
|
||||
break;
|
||||
}
|
||||
default:
|
||||
styleName = data[i][j] != null ? "cell_blue" : "cell_normal";
|
||||
}
|
||||
|
||||
cell.setCellStyle(styles.get(styleName));
|
||||
}
|
||||
}
|
||||
|
||||
//group rows for each phase, row numbers are 0-based
|
||||
sheet.groupRow(4, 6);
|
||||
sheet.groupRow(9, 13);
|
||||
sheet.groupRow(16, 18);
|
||||
|
||||
//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(3, 4);
|
||||
|
||||
|
||||
// Write the output to a file
|
||||
String file = "businessplan.xls";
|
||||
if(wb instanceof XSSFWorkbook) file += "x";
|
||||
FileOutputStream out = new FileOutputStream(file);
|
||||
wb.write(out);
|
||||
out.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* create a library of cell styles
|
||||
*/
|
||||
private static Map<String, CellStyle> createStyles(Workbook wb){
|
||||
Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
|
||||
DataFormat df = wb.createDataFormat();
|
||||
|
||||
CellStyle style;
|
||||
Font headerFont = wb.createFont();
|
||||
headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
|
||||
style = createBorderedStyle(wb);
|
||||
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(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);
|
||||
|
||||
Font font1 = wb.createFont();
|
||||
font1.setBoldweight(Font.BOLDWEIGHT_BOLD);
|
||||
style = createBorderedStyle(wb);
|
||||
style.setAlignment(CellStyle.ALIGN_LEFT);
|
||||
style.setFont(font1);
|
||||
styles.put("cell_b", style);
|
||||
|
||||
style = createBorderedStyle(wb);
|
||||
style.setAlignment(CellStyle.ALIGN_CENTER);
|
||||
style.setFont(font1);
|
||||
styles.put("cell_b_centered", style);
|
||||
|
||||
style = createBorderedStyle(wb);
|
||||
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(CellStyle.ALIGN_RIGHT);
|
||||
style.setFont(font1);
|
||||
style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
|
||||
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
|
||||
style.setDataFormat(df.getFormat("d-mmm"));
|
||||
styles.put("cell_g", style);
|
||||
|
||||
Font font2 = wb.createFont();
|
||||
font2.setColor(IndexedColors.BLUE.getIndex());
|
||||
font2.setBoldweight(Font.BOLDWEIGHT_BOLD);
|
||||
style = createBorderedStyle(wb);
|
||||
style.setAlignment(CellStyle.ALIGN_LEFT);
|
||||
style.setFont(font2);
|
||||
styles.put("cell_bb", style);
|
||||
|
||||
style = createBorderedStyle(wb);
|
||||
style.setAlignment(CellStyle.ALIGN_RIGHT);
|
||||
style.setFont(font1);
|
||||
style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
|
||||
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
|
||||
style.setDataFormat(df.getFormat("d-mmm"));
|
||||
styles.put("cell_bg", style);
|
||||
|
||||
Font font3 = wb.createFont();
|
||||
font3.setFontHeightInPoints((short)14);
|
||||
font3.setColor(IndexedColors.DARK_BLUE.getIndex());
|
||||
font3.setBoldweight(Font.BOLDWEIGHT_BOLD);
|
||||
style = createBorderedStyle(wb);
|
||||
style.setAlignment(CellStyle.ALIGN_LEFT);
|
||||
style.setFont(font3);
|
||||
style.setWrapText(true);
|
||||
styles.put("cell_h", style);
|
||||
|
||||
style = createBorderedStyle(wb);
|
||||
style.setAlignment(CellStyle.ALIGN_LEFT);
|
||||
style.setWrapText(true);
|
||||
styles.put("cell_normal", style);
|
||||
|
||||
style = createBorderedStyle(wb);
|
||||
style.setAlignment(CellStyle.ALIGN_CENTER);
|
||||
style.setWrapText(true);
|
||||
styles.put("cell_normal_centered", style);
|
||||
|
||||
style = createBorderedStyle(wb);
|
||||
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(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(CellStyle.SOLID_FOREGROUND);
|
||||
styles.put("cell_blue", style);
|
||||
|
||||
return styles;
|
||||
}
|
||||
|
||||
private static CellStyle createBorderedStyle(Workbook wb){
|
||||
CellStyle style = wb.createCellStyle();
|
||||
style.setBorderRight(CellStyle.BORDER_THIN);
|
||||
style.setRightBorderColor(IndexedColors.BLACK.getIndex());
|
||||
style.setBorderBottom(CellStyle.BORDER_THIN);
|
||||
style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
|
||||
style.setBorderLeft(CellStyle.BORDER_THIN);
|
||||
style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
|
||||
style.setBorderTop(CellStyle.BORDER_THIN);
|
||||
style.setTopBorderColor(IndexedColors.BLACK.getIndex());
|
||||
return style;
|
||||
}
|
||||
}
|
||||
|
@ -1,242 +1,243 @@
|
||||
/* ====================================================================
|
||||
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;
|
||||
}
|
||||
}
|
||||
/* ====================================================================
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
@ -1,304 +1,305 @@
|
||||
/* ====================================================================
|
||||
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.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. 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 {
|
||||
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);
|
||||
|
||||
PrintSetup printSetup = sheet.getPrintSetup();
|
||||
printSetup.setLandscape(true);
|
||||
sheet.setFitToPage(true);
|
||||
sheet.setHorizontallyCenter(true);
|
||||
|
||||
sheet.setColumnWidth(0, 3*256);
|
||||
sheet.setColumnWidth(1, 3*256);
|
||||
sheet.setColumnWidth(2, 11*256);
|
||||
sheet.setColumnWidth(3, 14*256);
|
||||
sheet.setColumnWidth(4, 14*256);
|
||||
sheet.setColumnWidth(5, 14*256);
|
||||
sheet.setColumnWidth(6, 14*256);
|
||||
|
||||
createNames(wb);
|
||||
|
||||
Row titleRow = sheet.createRow(0);
|
||||
titleRow.setHeightInPoints(35);
|
||||
for (int i = 1; i <= 7; i++) {
|
||||
titleRow.createCell(i).setCellStyle(styles.get("title"));
|
||||
}
|
||||
Cell titleCell = titleRow.getCell(2);
|
||||
titleCell.setCellValue("Simple Loan Calculator");
|
||||
sheet.addMergedRegion(CellRangeAddress.valueOf("$C$1:$H$1"));
|
||||
|
||||
Row row = sheet.createRow(2);
|
||||
Cell cell = row.createCell(4);
|
||||
cell.setCellValue("Enter values");
|
||||
cell.setCellStyle(styles.get("item_right"));
|
||||
|
||||
row = sheet.createRow(3);
|
||||
cell = row.createCell(2);
|
||||
cell.setCellValue("Loan amount");
|
||||
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);
|
||||
cell.setCellValue("Annual interest rate");
|
||||
cell.setCellStyle(styles.get("item_left"));
|
||||
cell = row.createCell(4);
|
||||
cell.setCellStyle(styles.get("input_%"));
|
||||
|
||||
row = sheet.createRow(5);
|
||||
cell = row.createCell(2);
|
||||
cell.setCellValue("Loan period in years");
|
||||
cell.setCellStyle(styles.get("item_left"));
|
||||
cell = row.createCell(4);
|
||||
cell.setCellStyle(styles.get("input_i"));
|
||||
|
||||
row = sheet.createRow(6);
|
||||
cell = row.createCell(2);
|
||||
cell.setCellValue("Start date of loan");
|
||||
cell.setCellStyle(styles.get("item_left"));
|
||||
cell = row.createCell(4);
|
||||
cell.setCellStyle(styles.get("input_d"));
|
||||
|
||||
row = sheet.createRow(8);
|
||||
cell = row.createCell(2);
|
||||
cell.setCellValue("Monthly payment");
|
||||
cell.setCellStyle(styles.get("item_left"));
|
||||
cell = row.createCell(4);
|
||||
cell.setCellFormula("IF(Values_Entered,Monthly_Payment,\"\")");
|
||||
cell.setCellStyle(styles.get("formula_$"));
|
||||
|
||||
row = sheet.createRow(9);
|
||||
cell = row.createCell(2);
|
||||
cell.setCellValue("Number of payments");
|
||||
cell.setCellStyle(styles.get("item_left"));
|
||||
cell = row.createCell(4);
|
||||
cell.setCellFormula("IF(Values_Entered,Loan_Years*12,\"\")");
|
||||
cell.setCellStyle(styles.get("formula_i"));
|
||||
|
||||
row = sheet.createRow(10);
|
||||
cell = row.createCell(2);
|
||||
cell.setCellValue("Total interest");
|
||||
cell.setCellStyle(styles.get("item_left"));
|
||||
cell = row.createCell(4);
|
||||
cell.setCellFormula("IF(Values_Entered,Total_Cost-Loan_Amount,\"\")");
|
||||
cell.setCellStyle(styles.get("formula_$"));
|
||||
|
||||
row = sheet.createRow(11);
|
||||
cell = row.createCell(2);
|
||||
cell.setCellValue("Total cost of loan");
|
||||
cell.setCellStyle(styles.get("item_left"));
|
||||
cell = row.createCell(4);
|
||||
cell.setCellFormula("IF(Values_Entered,Monthly_Payment*Number_of_Payments,\"\")");
|
||||
cell.setCellStyle(styles.get("formula_$"));
|
||||
|
||||
|
||||
// Write the output to a file
|
||||
String file = "loan-calculator.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>();
|
||||
|
||||
CellStyle style;
|
||||
Font titleFont = wb.createFont();
|
||||
titleFont.setFontHeightInPoints((short)14);
|
||||
titleFont.setFontName("Trebuchet MS");
|
||||
style = wb.createCellStyle();
|
||||
style.setFont(titleFont);
|
||||
style.setBorderBottom(CellStyle.BORDER_DOTTED);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
styles.put("title", style);
|
||||
|
||||
Font itemFont = wb.createFont();
|
||||
itemFont.setFontHeightInPoints((short)9);
|
||||
itemFont.setFontName("Trebuchet MS");
|
||||
style = wb.createCellStyle();
|
||||
style.setAlignment(CellStyle.ALIGN_LEFT);
|
||||
style.setFont(itemFont);
|
||||
styles.put("item_left", style);
|
||||
|
||||
style = wb.createCellStyle();
|
||||
style.setAlignment(CellStyle.ALIGN_RIGHT);
|
||||
style.setFont(itemFont);
|
||||
styles.put("item_right", style);
|
||||
|
||||
style = wb.createCellStyle();
|
||||
style.setAlignment(CellStyle.ALIGN_RIGHT);
|
||||
style.setFont(itemFont);
|
||||
style.setBorderRight(CellStyle.BORDER_DOTTED);
|
||||
style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderBottom(CellStyle.BORDER_DOTTED);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderLeft(CellStyle.BORDER_DOTTED);
|
||||
style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
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(CellStyle.ALIGN_RIGHT);
|
||||
style.setFont(itemFont);
|
||||
style.setBorderRight(CellStyle.BORDER_DOTTED);
|
||||
style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderBottom(CellStyle.BORDER_DOTTED);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderLeft(CellStyle.BORDER_DOTTED);
|
||||
style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
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(CellStyle.ALIGN_RIGHT);
|
||||
style.setFont(itemFont);
|
||||
style.setBorderRight(CellStyle.BORDER_DOTTED);
|
||||
style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderBottom(CellStyle.BORDER_DOTTED);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderLeft(CellStyle.BORDER_DOTTED);
|
||||
style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
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(CellStyle.ALIGN_CENTER);
|
||||
style.setFont(itemFont);
|
||||
style.setDataFormat(wb.createDataFormat().getFormat("m/d/yy"));
|
||||
styles.put("input_d", style);
|
||||
|
||||
style = wb.createCellStyle();
|
||||
style.setAlignment(CellStyle.ALIGN_RIGHT);
|
||||
style.setFont(itemFont);
|
||||
style.setBorderRight(CellStyle.BORDER_DOTTED);
|
||||
style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderBottom(CellStyle.BORDER_DOTTED);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderLeft(CellStyle.BORDER_DOTTED);
|
||||
style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderTop(CellStyle.BORDER_DOTTED);
|
||||
style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setDataFormat(wb.createDataFormat().getFormat("$##,##0.00"));
|
||||
style.setBorderBottom(CellStyle.BORDER_DOTTED);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
|
||||
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
|
||||
styles.put("formula_$", style);
|
||||
|
||||
style = wb.createCellStyle();
|
||||
style.setAlignment(CellStyle.ALIGN_RIGHT);
|
||||
style.setFont(itemFont);
|
||||
style.setBorderRight(CellStyle.BORDER_DOTTED);
|
||||
style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderBottom(CellStyle.BORDER_DOTTED);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderLeft(CellStyle.BORDER_DOTTED);
|
||||
style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderTop(CellStyle.BORDER_DOTTED);
|
||||
style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setDataFormat(wb.createDataFormat().getFormat("0"));
|
||||
style.setBorderBottom(CellStyle.BORDER_DOTTED);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
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(Workbook wb){
|
||||
Name name;
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Interest_Rate");
|
||||
name.setRefersToFormula("'Loan Calculator'!$E$5");
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Loan_Amount");
|
||||
name.setRefersToFormula("'Loan Calculator'!$E$4");
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Loan_Start");
|
||||
name.setRefersToFormula("'Loan Calculator'!$E$7");
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Loan_Years");
|
||||
name.setRefersToFormula("'Loan Calculator'!$E$6");
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Number_of_Payments");
|
||||
name.setRefersToFormula("'Loan Calculator'!$E$10");
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Monthly_Payment");
|
||||
name.setRefersToFormula("-PMT(Interest_Rate/12,Number_of_Payments,Loan_Amount)");
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Total_Cost");
|
||||
name.setRefersToFormula("'Loan Calculator'!$E$12");
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Total_Interest");
|
||||
name.setRefersToFormula("'Loan Calculator'!$E$11");
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Values_Entered");
|
||||
name.setRefersToFormula("IF(Loan_Amount*Interest_Rate*Loan_Years*Loan_Start>0,1,0)");
|
||||
}
|
||||
}
|
||||
/* ====================================================================
|
||||
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.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. 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 {
|
||||
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);
|
||||
|
||||
PrintSetup printSetup = sheet.getPrintSetup();
|
||||
printSetup.setLandscape(true);
|
||||
sheet.setFitToPage(true);
|
||||
sheet.setHorizontallyCenter(true);
|
||||
|
||||
sheet.setColumnWidth(0, 3*256);
|
||||
sheet.setColumnWidth(1, 3*256);
|
||||
sheet.setColumnWidth(2, 11*256);
|
||||
sheet.setColumnWidth(3, 14*256);
|
||||
sheet.setColumnWidth(4, 14*256);
|
||||
sheet.setColumnWidth(5, 14*256);
|
||||
sheet.setColumnWidth(6, 14*256);
|
||||
|
||||
createNames(wb);
|
||||
|
||||
Row titleRow = sheet.createRow(0);
|
||||
titleRow.setHeightInPoints(35);
|
||||
for (int i = 1; i <= 7; i++) {
|
||||
titleRow.createCell(i).setCellStyle(styles.get("title"));
|
||||
}
|
||||
Cell titleCell = titleRow.getCell(2);
|
||||
titleCell.setCellValue("Simple Loan Calculator");
|
||||
sheet.addMergedRegion(CellRangeAddress.valueOf("$C$1:$H$1"));
|
||||
|
||||
Row row = sheet.createRow(2);
|
||||
Cell cell = row.createCell(4);
|
||||
cell.setCellValue("Enter values");
|
||||
cell.setCellStyle(styles.get("item_right"));
|
||||
|
||||
row = sheet.createRow(3);
|
||||
cell = row.createCell(2);
|
||||
cell.setCellValue("Loan amount");
|
||||
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);
|
||||
cell.setCellValue("Annual interest rate");
|
||||
cell.setCellStyle(styles.get("item_left"));
|
||||
cell = row.createCell(4);
|
||||
cell.setCellStyle(styles.get("input_%"));
|
||||
|
||||
row = sheet.createRow(5);
|
||||
cell = row.createCell(2);
|
||||
cell.setCellValue("Loan period in years");
|
||||
cell.setCellStyle(styles.get("item_left"));
|
||||
cell = row.createCell(4);
|
||||
cell.setCellStyle(styles.get("input_i"));
|
||||
|
||||
row = sheet.createRow(6);
|
||||
cell = row.createCell(2);
|
||||
cell.setCellValue("Start date of loan");
|
||||
cell.setCellStyle(styles.get("item_left"));
|
||||
cell = row.createCell(4);
|
||||
cell.setCellStyle(styles.get("input_d"));
|
||||
|
||||
row = sheet.createRow(8);
|
||||
cell = row.createCell(2);
|
||||
cell.setCellValue("Monthly payment");
|
||||
cell.setCellStyle(styles.get("item_left"));
|
||||
cell = row.createCell(4);
|
||||
cell.setCellFormula("IF(Values_Entered,Monthly_Payment,\"\")");
|
||||
cell.setCellStyle(styles.get("formula_$"));
|
||||
|
||||
row = sheet.createRow(9);
|
||||
cell = row.createCell(2);
|
||||
cell.setCellValue("Number of payments");
|
||||
cell.setCellStyle(styles.get("item_left"));
|
||||
cell = row.createCell(4);
|
||||
cell.setCellFormula("IF(Values_Entered,Loan_Years*12,\"\")");
|
||||
cell.setCellStyle(styles.get("formula_i"));
|
||||
|
||||
row = sheet.createRow(10);
|
||||
cell = row.createCell(2);
|
||||
cell.setCellValue("Total interest");
|
||||
cell.setCellStyle(styles.get("item_left"));
|
||||
cell = row.createCell(4);
|
||||
cell.setCellFormula("IF(Values_Entered,Total_Cost-Loan_Amount,\"\")");
|
||||
cell.setCellStyle(styles.get("formula_$"));
|
||||
|
||||
row = sheet.createRow(11);
|
||||
cell = row.createCell(2);
|
||||
cell.setCellValue("Total cost of loan");
|
||||
cell.setCellStyle(styles.get("item_left"));
|
||||
cell = row.createCell(4);
|
||||
cell.setCellFormula("IF(Values_Entered,Monthly_Payment*Number_of_Payments,\"\")");
|
||||
cell.setCellStyle(styles.get("formula_$"));
|
||||
|
||||
|
||||
// Write the output to a file
|
||||
String file = "loan-calculator.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>();
|
||||
|
||||
CellStyle style;
|
||||
Font titleFont = wb.createFont();
|
||||
titleFont.setFontHeightInPoints((short)14);
|
||||
titleFont.setFontName("Trebuchet MS");
|
||||
style = wb.createCellStyle();
|
||||
style.setFont(titleFont);
|
||||
style.setBorderBottom(CellStyle.BORDER_DOTTED);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
styles.put("title", style);
|
||||
|
||||
Font itemFont = wb.createFont();
|
||||
itemFont.setFontHeightInPoints((short)9);
|
||||
itemFont.setFontName("Trebuchet MS");
|
||||
style = wb.createCellStyle();
|
||||
style.setAlignment(CellStyle.ALIGN_LEFT);
|
||||
style.setFont(itemFont);
|
||||
styles.put("item_left", style);
|
||||
|
||||
style = wb.createCellStyle();
|
||||
style.setAlignment(CellStyle.ALIGN_RIGHT);
|
||||
style.setFont(itemFont);
|
||||
styles.put("item_right", style);
|
||||
|
||||
style = wb.createCellStyle();
|
||||
style.setAlignment(CellStyle.ALIGN_RIGHT);
|
||||
style.setFont(itemFont);
|
||||
style.setBorderRight(CellStyle.BORDER_DOTTED);
|
||||
style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderBottom(CellStyle.BORDER_DOTTED);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderLeft(CellStyle.BORDER_DOTTED);
|
||||
style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
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(CellStyle.ALIGN_RIGHT);
|
||||
style.setFont(itemFont);
|
||||
style.setBorderRight(CellStyle.BORDER_DOTTED);
|
||||
style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderBottom(CellStyle.BORDER_DOTTED);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderLeft(CellStyle.BORDER_DOTTED);
|
||||
style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
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(CellStyle.ALIGN_RIGHT);
|
||||
style.setFont(itemFont);
|
||||
style.setBorderRight(CellStyle.BORDER_DOTTED);
|
||||
style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderBottom(CellStyle.BORDER_DOTTED);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderLeft(CellStyle.BORDER_DOTTED);
|
||||
style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
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(CellStyle.ALIGN_CENTER);
|
||||
style.setFont(itemFont);
|
||||
style.setDataFormat(wb.createDataFormat().getFormat("m/d/yy"));
|
||||
styles.put("input_d", style);
|
||||
|
||||
style = wb.createCellStyle();
|
||||
style.setAlignment(CellStyle.ALIGN_RIGHT);
|
||||
style.setFont(itemFont);
|
||||
style.setBorderRight(CellStyle.BORDER_DOTTED);
|
||||
style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderBottom(CellStyle.BORDER_DOTTED);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderLeft(CellStyle.BORDER_DOTTED);
|
||||
style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderTop(CellStyle.BORDER_DOTTED);
|
||||
style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setDataFormat(wb.createDataFormat().getFormat("$##,##0.00"));
|
||||
style.setBorderBottom(CellStyle.BORDER_DOTTED);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
|
||||
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
|
||||
styles.put("formula_$", style);
|
||||
|
||||
style = wb.createCellStyle();
|
||||
style.setAlignment(CellStyle.ALIGN_RIGHT);
|
||||
style.setFont(itemFont);
|
||||
style.setBorderRight(CellStyle.BORDER_DOTTED);
|
||||
style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderBottom(CellStyle.BORDER_DOTTED);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderLeft(CellStyle.BORDER_DOTTED);
|
||||
style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setBorderTop(CellStyle.BORDER_DOTTED);
|
||||
style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
style.setDataFormat(wb.createDataFormat().getFormat("0"));
|
||||
style.setBorderBottom(CellStyle.BORDER_DOTTED);
|
||||
style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
|
||||
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(Workbook wb){
|
||||
Name name;
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Interest_Rate");
|
||||
name.setRefersToFormula("'Loan Calculator'!$E$5");
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Loan_Amount");
|
||||
name.setRefersToFormula("'Loan Calculator'!$E$4");
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Loan_Start");
|
||||
name.setRefersToFormula("'Loan Calculator'!$E$7");
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Loan_Years");
|
||||
name.setRefersToFormula("'Loan Calculator'!$E$6");
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Number_of_Payments");
|
||||
name.setRefersToFormula("'Loan Calculator'!$E$10");
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Monthly_Payment");
|
||||
name.setRefersToFormula("-PMT(Interest_Rate/12,Number_of_Payments,Loan_Amount)");
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Total_Cost");
|
||||
name.setRefersToFormula("'Loan Calculator'!$E$12");
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Total_Interest");
|
||||
name.setRefersToFormula("'Loan Calculator'!$E$11");
|
||||
|
||||
name = wb.createName();
|
||||
name.setNameName("Values_Entered");
|
||||
name.setRefersToFormula("IF(Loan_Amount*Interest_Rate*Loan_Years*Loan_Start>0,1,0)");
|
||||
}
|
||||
}
|
||||
|
@ -1,219 +1,220 @@
|
||||
/* ====================================================================
|
||||
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.hssf.usermodel.HSSFWorkbook;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
import java.io.FileOutputStream;
|
||||
|
||||
/**
|
||||
* A weekly timesheet created using Apache POI.
|
||||
* Usage:
|
||||
* TimesheetDemo -xls|xlsx
|
||||
*
|
||||
* @author Yegor Kozlov
|
||||
*/
|
||||
public class TimesheetDemo {
|
||||
private static final String[] titles = {
|
||||
"Person", "ID", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun",
|
||||
"Total\nHrs", "Overtime\nHrs", "Regular\nHrs"
|
||||
};
|
||||
|
||||
private static Object[][] sample_data = {
|
||||
{"Yegor Kozlov", "YK", 5.0, 8.0, 10.0, 5.0, 5.0, 7.0, 6.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;
|
||||
|
||||
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("Timesheet");
|
||||
PrintSetup printSetup = sheet.getPrintSetup();
|
||||
printSetup.setLandscape(true);
|
||||
sheet.setFitToPage(true);
|
||||
sheet.setHorizontallyCenter(true);
|
||||
|
||||
//title row
|
||||
Row titleRow = sheet.createRow(0);
|
||||
titleRow.setHeightInPoints(45);
|
||||
Cell titleCell = titleRow.createCell(0);
|
||||
titleCell.setCellValue("Weekly Timesheet");
|
||||
titleCell.setCellStyle(styles.get("title"));
|
||||
sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$L$1"));
|
||||
|
||||
//header row
|
||||
Row headerRow = sheet.createRow(1);
|
||||
headerRow.setHeightInPoints(40);
|
||||
Cell headerCell;
|
||||
for (int i = 0; i < titles.length; i++) {
|
||||
headerCell = headerRow.createCell(i);
|
||||
headerCell.setCellValue(titles[i]);
|
||||
headerCell.setCellStyle(styles.get("header"));
|
||||
}
|
||||
|
||||
int rownum = 2;
|
||||
for (int i = 0; i < 10; i++) {
|
||||
Row row = sheet.createRow(rownum++);
|
||||
for (int j = 0; j < titles.length; 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;
|
||||
cell.setCellFormula("SUM("+ref+")");
|
||||
cell.setCellStyle(styles.get("formula"));
|
||||
} else if (j == 11){
|
||||
cell.setCellFormula("J" +rownum+ "-K" + rownum);
|
||||
cell.setCellStyle(styles.get("formula"));
|
||||
} else {
|
||||
cell.setCellStyle(styles.get("cell"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//row with totals below
|
||||
Row sumRow = sheet.createRow(rownum++);
|
||||
sumRow.setHeightInPoints(35);
|
||||
Cell cell;
|
||||
cell = sumRow.createCell(0);
|
||||
cell.setCellStyle(styles.get("formula"));
|
||||
cell = sumRow.createCell(1);
|
||||
cell.setCellValue("Total Hrs:");
|
||||
cell.setCellStyle(styles.get("formula"));
|
||||
|
||||
for (int j = 2; j < 12; j++) {
|
||||
cell = sumRow.createCell(j);
|
||||
String ref = (char)('A' + j) + "3:" + (char)('A' + j) + "12";
|
||||
cell.setCellFormula("SUM(" + ref + ")");
|
||||
if(j >= 9) cell.setCellStyle(styles.get("formula_2"));
|
||||
else cell.setCellStyle(styles.get("formula"));
|
||||
}
|
||||
rownum++;
|
||||
sumRow = sheet.createRow(rownum++);
|
||||
sumRow.setHeightInPoints(25);
|
||||
cell = sumRow.createCell(0);
|
||||
cell.setCellValue("Total Regular Hours");
|
||||
cell.setCellStyle(styles.get("formula"));
|
||||
cell = sumRow.createCell(1);
|
||||
cell.setCellFormula("L13");
|
||||
cell.setCellStyle(styles.get("formula_2"));
|
||||
sumRow = sheet.createRow(rownum++);
|
||||
sumRow.setHeightInPoints(25);
|
||||
cell = sumRow.createCell(0);
|
||||
cell.setCellValue("Total Overtime Hours");
|
||||
cell.setCellStyle(styles.get("formula"));
|
||||
cell = sumRow.createCell(1);
|
||||
cell.setCellFormula("K13");
|
||||
cell.setCellStyle(styles.get("formula_2"));
|
||||
|
||||
//set sample data
|
||||
for (int i = 0; i < sample_data.length; i++) {
|
||||
Row row = sheet.getRow(2 + i);
|
||||
for (int j = 0; j < sample_data[i].length; j++) {
|
||||
if(sample_data[i][j] == null) continue;
|
||||
|
||||
if(sample_data[i][j] instanceof String) {
|
||||
row.getCell(j).setCellValue((String)sample_data[i][j]);
|
||||
} else {
|
||||
row.getCell(j).setCellValue((Double)sample_data[i][j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//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); //6 characters wide
|
||||
}
|
||||
sheet.setColumnWidth(10, 10*256); //10 characters wide
|
||||
|
||||
// Write the output to a file
|
||||
String file = "timesheet.xls";
|
||||
if(wb instanceof XSSFWorkbook) file += "x";
|
||||
FileOutputStream out = new FileOutputStream(file);
|
||||
wb.write(out);
|
||||
out.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.setBoldweight(Font.BOLDWEIGHT_BOLD);
|
||||
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)11);
|
||||
monthFont.setColor(IndexedColors.WHITE.getIndex());
|
||||
style = wb.createCellStyle();
|
||||
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(CellStyle.ALIGN_CENTER);
|
||||
style.setWrapText(true);
|
||||
style.setBorderRight(CellStyle.BORDER_THIN);
|
||||
style.setRightBorderColor(IndexedColors.BLACK.getIndex());
|
||||
style.setBorderLeft(CellStyle.BORDER_THIN);
|
||||
style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
|
||||
style.setBorderTop(CellStyle.BORDER_THIN);
|
||||
style.setTopBorderColor(IndexedColors.BLACK.getIndex());
|
||||
style.setBorderBottom(CellStyle.BORDER_THIN);
|
||||
style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
|
||||
styles.put("cell", style);
|
||||
|
||||
style = wb.createCellStyle();
|
||||
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(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);
|
||||
|
||||
return styles;
|
||||
}
|
||||
}
|
||||
/* ====================================================================
|
||||
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.hssf.usermodel.HSSFWorkbook;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.HashMap;
|
||||
import java.io.FileOutputStream;
|
||||
|
||||
/**
|
||||
* A weekly timesheet created using Apache POI.
|
||||
* Usage:
|
||||
* TimesheetDemo -xls|xlsx
|
||||
*
|
||||
* @author Yegor Kozlov
|
||||
*/
|
||||
public class TimesheetDemo {
|
||||
private static final String[] titles = {
|
||||
"Person", "ID", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun",
|
||||
"Total\nHrs", "Overtime\nHrs", "Regular\nHrs"
|
||||
};
|
||||
|
||||
private static Object[][] sample_data = {
|
||||
{"Yegor Kozlov", "YK", 5.0, 8.0, 10.0, 5.0, 5.0, 7.0, 6.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;
|
||||
|
||||
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("Timesheet");
|
||||
PrintSetup printSetup = sheet.getPrintSetup();
|
||||
printSetup.setLandscape(true);
|
||||
sheet.setFitToPage(true);
|
||||
sheet.setHorizontallyCenter(true);
|
||||
|
||||
//title row
|
||||
Row titleRow = sheet.createRow(0);
|
||||
titleRow.setHeightInPoints(45);
|
||||
Cell titleCell = titleRow.createCell(0);
|
||||
titleCell.setCellValue("Weekly Timesheet");
|
||||
titleCell.setCellStyle(styles.get("title"));
|
||||
sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$L$1"));
|
||||
|
||||
//header row
|
||||
Row headerRow = sheet.createRow(1);
|
||||
headerRow.setHeightInPoints(40);
|
||||
Cell headerCell;
|
||||
for (int i = 0; i < titles.length; i++) {
|
||||
headerCell = headerRow.createCell(i);
|
||||
headerCell.setCellValue(titles[i]);
|
||||
headerCell.setCellStyle(styles.get("header"));
|
||||
}
|
||||
|
||||
int rownum = 2;
|
||||
for (int i = 0; i < 10; i++) {
|
||||
Row row = sheet.createRow(rownum++);
|
||||
for (int j = 0; j < titles.length; 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;
|
||||
cell.setCellFormula("SUM("+ref+")");
|
||||
cell.setCellStyle(styles.get("formula"));
|
||||
} else if (j == 11){
|
||||
cell.setCellFormula("J" +rownum+ "-K" + rownum);
|
||||
cell.setCellStyle(styles.get("formula"));
|
||||
} else {
|
||||
cell.setCellStyle(styles.get("cell"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//row with totals below
|
||||
Row sumRow = sheet.createRow(rownum++);
|
||||
sumRow.setHeightInPoints(35);
|
||||
Cell cell;
|
||||
cell = sumRow.createCell(0);
|
||||
cell.setCellStyle(styles.get("formula"));
|
||||
cell = sumRow.createCell(1);
|
||||
cell.setCellValue("Total Hrs:");
|
||||
cell.setCellStyle(styles.get("formula"));
|
||||
|
||||
for (int j = 2; j < 12; j++) {
|
||||
cell = sumRow.createCell(j);
|
||||
String ref = (char)('A' + j) + "3:" + (char)('A' + j) + "12";
|
||||
cell.setCellFormula("SUM(" + ref + ")");
|
||||
if(j >= 9) cell.setCellStyle(styles.get("formula_2"));
|
||||
else cell.setCellStyle(styles.get("formula"));
|
||||
}
|
||||
rownum++;
|
||||
sumRow = sheet.createRow(rownum++);
|
||||
sumRow.setHeightInPoints(25);
|
||||
cell = sumRow.createCell(0);
|
||||
cell.setCellValue("Total Regular Hours");
|
||||
cell.setCellStyle(styles.get("formula"));
|
||||
cell = sumRow.createCell(1);
|
||||
cell.setCellFormula("L13");
|
||||
cell.setCellStyle(styles.get("formula_2"));
|
||||
sumRow = sheet.createRow(rownum++);
|
||||
sumRow.setHeightInPoints(25);
|
||||
cell = sumRow.createCell(0);
|
||||
cell.setCellValue("Total Overtime Hours");
|
||||
cell.setCellStyle(styles.get("formula"));
|
||||
cell = sumRow.createCell(1);
|
||||
cell.setCellFormula("K13");
|
||||
cell.setCellStyle(styles.get("formula_2"));
|
||||
|
||||
//set sample data
|
||||
for (int i = 0; i < sample_data.length; i++) {
|
||||
Row row = sheet.getRow(2 + i);
|
||||
for (int j = 0; j < sample_data[i].length; j++) {
|
||||
if(sample_data[i][j] == null) continue;
|
||||
|
||||
if(sample_data[i][j] instanceof String) {
|
||||
row.getCell(j).setCellValue((String)sample_data[i][j]);
|
||||
} else {
|
||||
row.getCell(j).setCellValue((Double)sample_data[i][j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//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); //6 characters wide
|
||||
}
|
||||
sheet.setColumnWidth(10, 10*256); //10 characters wide
|
||||
|
||||
// Write the output to a file
|
||||
String file = "timesheet.xls";
|
||||
if(wb instanceof XSSFWorkbook) file += "x";
|
||||
FileOutputStream out = new FileOutputStream(file);
|
||||
wb.write(out);
|
||||
out.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.setBoldweight(Font.BOLDWEIGHT_BOLD);
|
||||
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)11);
|
||||
monthFont.setColor(IndexedColors.WHITE.getIndex());
|
||||
style = wb.createCellStyle();
|
||||
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(CellStyle.ALIGN_CENTER);
|
||||
style.setWrapText(true);
|
||||
style.setBorderRight(CellStyle.BORDER_THIN);
|
||||
style.setRightBorderColor(IndexedColors.BLACK.getIndex());
|
||||
style.setBorderLeft(CellStyle.BORDER_THIN);
|
||||
style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
|
||||
style.setBorderTop(CellStyle.BORDER_THIN);
|
||||
style.setTopBorderColor(IndexedColors.BLACK.getIndex());
|
||||
style.setBorderBottom(CellStyle.BORDER_THIN);
|
||||
style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
|
||||
styles.put("cell", style);
|
||||
|
||||
style = wb.createCellStyle();
|
||||
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(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);
|
||||
|
||||
return styles;
|
||||
}
|
||||
}
|
||||
|
@ -1,29 +1,29 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
<!--
|
||||
====================================================================
|
||||
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.
|
||||
====================================================================
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body bgcolor="white">
|
||||
|
||||
This package contains common internal POI code for manipulating formulas.
|
||||
Client applications should not refer to these classes directly.
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
||||
<!--
|
||||
====================================================================
|
||||
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.
|
||||
====================================================================
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body bgcolor="white">
|
||||
|
||||
This package contains common internal POI code for manipulating formulas.
|
||||
Client applications should not refer to these classes directly.
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,285 +1,285 @@
|
||||
# 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.
|
||||
|
||||
# Created by (org.apache.poi.hssf.record.formula.function.ExcelFileFormatDocFunctionExtractor)
|
||||
# from source file 'excelfileformat.odt' (size=356107, md5=0x8f789cb6e75594caf068f8e193004ef4)
|
||||
#
|
||||
#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote )
|
||||
|
||||
# Built-In Sheet Functions in BIFF2
|
||||
0 COUNT 0 30 V R
|
||||
1 IF 2 3 R V R R
|
||||
2 ISNA 1 1 V V
|
||||
3 ISERROR 1 1 V V
|
||||
4 SUM 0 30 V R
|
||||
5 AVERAGE 1 30 V R
|
||||
6 MIN 1 30 V R
|
||||
7 MAX 1 30 V R
|
||||
8 ROW 0 1 V R
|
||||
9 COLUMN 0 1 V R
|
||||
10 NA 0 0 V -
|
||||
11 NPV 2 30 V V R
|
||||
12 STDEV 1 30 V R
|
||||
13 DOLLAR 1 2 V V V
|
||||
14 FIXED 2 2 V V V x
|
||||
15 SIN 1 1 V V
|
||||
16 COS 1 1 V V
|
||||
17 TAN 1 1 V V
|
||||
18 ATAN 1 1 V V
|
||||
19 PI 0 0 V -
|
||||
20 SQRT 1 1 V V
|
||||
21 EXP 1 1 V V
|
||||
22 LN 1 1 V V
|
||||
23 LOG10 1 1 V V
|
||||
24 ABS 1 1 V V
|
||||
25 INT 1 1 V V
|
||||
26 SIGN 1 1 V V
|
||||
27 ROUND 2 2 V V V
|
||||
28 LOOKUP 2 3 V V R R
|
||||
29 INDEX 2 4 R R V V V
|
||||
30 REPT 2 2 V V V
|
||||
31 MID 3 3 V V V V
|
||||
32 LEN 1 1 V V
|
||||
33 VALUE 1 1 V V
|
||||
34 TRUE 0 0 V -
|
||||
35 FALSE 0 0 V -
|
||||
36 AND 1 30 V R
|
||||
37 OR 1 30 V R
|
||||
38 NOT 1 1 V V
|
||||
39 MOD 2 2 V V V
|
||||
40 DCOUNT 3 3 V R R R
|
||||
41 DSUM 3 3 V R R R
|
||||
42 DAVERAGE 3 3 V R R R
|
||||
43 DMIN 3 3 V R R R
|
||||
44 DMAX 3 3 V R R R
|
||||
45 DSTDEV 3 3 V R R R
|
||||
46 VAR 1 30 V R
|
||||
47 DVAR 3 3 V R R R
|
||||
48 TEXT 2 2 V V V
|
||||
49 LINEST 1 2 A R R x
|
||||
50 TREND 1 3 A R R R x
|
||||
51 LOGEST 1 2 A R R x
|
||||
52 GROWTH 1 3 A R R R x
|
||||
56 PV 3 5 V V V V V V
|
||||
# Built-In Sheet Functions in BIFF2
|
||||
57 FV 3 5 V V V V V V
|
||||
58 NPER 3 5 V V V V V V
|
||||
59 PMT 3 5 V V V V V V
|
||||
60 RATE 3 6 V V V V V V V
|
||||
61 MIRR 3 3 V R V V
|
||||
62 IRR 1 2 V R V
|
||||
63 RAND 0 0 V - x
|
||||
64 MATCH 2 3 V V R R
|
||||
65 DATE 3 3 V V V V
|
||||
66 TIME 3 3 V V V V
|
||||
67 DAY 1 1 V V
|
||||
68 MONTH 1 1 V V
|
||||
69 YEAR 1 1 V V
|
||||
70 WEEKDAY 1 1 V V x
|
||||
71 HOUR 1 1 V V
|
||||
72 MINUTE 1 1 V V
|
||||
73 SECOND 1 1 V V
|
||||
74 NOW 0 0 V - x
|
||||
75 AREAS 1 1 V R
|
||||
76 ROWS 1 1 V R
|
||||
77 COLUMNS 1 1 V R
|
||||
78 OFFSET 3 5 R R V V V V x
|
||||
82 SEARCH 2 3 V V V V
|
||||
83 TRANSPOSE 1 1 A A
|
||||
86 TYPE 1 1 V V
|
||||
97 ATAN2 2 2 V V V
|
||||
98 ASIN 1 1 V V
|
||||
99 ACOS 1 1 V V
|
||||
100 CHOOSE 2 30 R V R
|
||||
101 HLOOKUP 3 3 V V R R x
|
||||
102 VLOOKUP 3 3 V V R R x
|
||||
105 ISREF 1 1 V R
|
||||
109 LOG 1 2 V V V
|
||||
111 CHAR 1 1 V V
|
||||
112 LOWER 1 1 V V
|
||||
113 UPPER 1 1 V V
|
||||
114 PROPER 1 1 V V
|
||||
115 LEFT 1 2 V V V
|
||||
116 RIGHT 1 2 V V V
|
||||
117 EXACT 2 2 V V V
|
||||
118 TRIM 1 1 V V
|
||||
119 REPLACE 4 4 V V V V V
|
||||
120 SUBSTITUTE 3 4 V V V V V
|
||||
121 CODE 1 1 V V
|
||||
124 FIND 2 3 V V V V
|
||||
125 CELL 1 2 V V R x
|
||||
126 ISERR 1 1 V V
|
||||
127 ISTEXT 1 1 V V
|
||||
128 ISNUMBER 1 1 V V
|
||||
129 ISBLANK 1 1 V V
|
||||
130 T 1 1 V R
|
||||
131 N 1 1 V R
|
||||
140 DATEVALUE 1 1 V V
|
||||
141 TIMEVALUE 1 1 V V
|
||||
142 SLN 3 3 V V V V
|
||||
143 SYD 4 4 V V V V V
|
||||
144 DDB 4 5 V V V V V V
|
||||
148 INDIRECT 1 2 R V V x
|
||||
162 CLEAN 1 1 V V
|
||||
163 MDETERM 1 1 V A
|
||||
164 MINVERSE 1 1 A A
|
||||
165 MMULT 2 2 A A A
|
||||
167 IPMT 4 6 V V V V V V V
|
||||
168 PPMT 4 6 V V V V V V V
|
||||
169 COUNTA 0 30 V R
|
||||
183 PRODUCT 0 30 V R
|
||||
184 FACT 1 1 V V
|
||||
189 DPRODUCT 3 3 V R R R
|
||||
190 ISNONTEXT 1 1 V V
|
||||
193 STDEVP 1 30 V R
|
||||
194 VARP 1 30 V R
|
||||
195 DSTDEVP 3 3 V R R R
|
||||
196 DVARP 3 3 V R R R
|
||||
197 TRUNC 1 1 V V x
|
||||
198 ISLOGICAL 1 1 V V
|
||||
199 DCOUNTA 3 3 V R R R
|
||||
# New Built-In Sheet Functions in BIFF3
|
||||
49 LINEST 1 4 A R R V V x
|
||||
50 TREND 1 4 A R R R V x
|
||||
51 LOGEST 1 4 A R R V V x
|
||||
52 GROWTH 1 4 A R R R V x
|
||||
197 TRUNC 1 2 V V V x
|
||||
204 YEN 1 2 V V V x
|
||||
205 FINDB 2 3 V V V V
|
||||
206 SEARCHB 2 3 V V V V
|
||||
207 REPLACEB 4 4 V V V V V
|
||||
208 LEFTB 1 2 V V V
|
||||
209 RIGHTB 1 2 V V V
|
||||
210 MIDB 3 3 V V V V
|
||||
211 LENB 1 1 V V
|
||||
212 ROUNDUP 2 2 V V V
|
||||
213 ROUNDDOWN 2 2 V V V
|
||||
214 ASC 1 1 V V
|
||||
215 JIS 1 1 V V x
|
||||
219 ADDRESS 2 5 V V V V V V
|
||||
220 DAYS360 2 2 V V V x
|
||||
221 TODAY 0 0 V - x
|
||||
222 VDB 5 7 V V V V V V V V
|
||||
227 MEDIAN 1 30 V R ...
|
||||
228 SUMPRODUCT 1 30 V A ...
|
||||
229 SINH 1 1 V V
|
||||
230 COSH 1 1 V V
|
||||
231 TANH 1 1 V V
|
||||
232 ASINH 1 1 V V
|
||||
233 ACOSH 1 1 V V
|
||||
234 ATANH 1 1 V V
|
||||
235 DGET 3 3 V R R R
|
||||
244 INFO 1 1 V V
|
||||
# New Built-In Sheet Functions in BIFF4
|
||||
14 FIXED 2 3 V V V V x
|
||||
204 USDOLLAR 1 2 V V V x
|
||||
215 DBCS 1 1 V V x
|
||||
216 RANK 2 3 V V R V
|
||||
247 DB 4 5 V V V V V V
|
||||
252 FREQUENCY 2 2 A R R
|
||||
261 ERROR.TYPE 1 1 V V
|
||||
269 AVEDEV 1 30 V R ...
|
||||
270 BETADIST 3 5 V V V V V V
|
||||
271 GAMMALN 1 1 V V
|
||||
272 BETAINV 3 5 V V V V V V
|
||||
273 BINOMDIST 4 4 V V V V V
|
||||
274 CHIDIST 2 2 V V V
|
||||
275 CHIINV 2 2 V V V
|
||||
276 COMBIN 2 2 V V V
|
||||
277 CONFIDENCE 3 3 V V V V
|
||||
278 CRITBINOM 3 3 V V V V
|
||||
279 EVEN 1 1 V V
|
||||
280 EXPONDIST 3 3 V V V V
|
||||
281 FDIST 3 3 V V V V
|
||||
282 FINV 3 3 V V V V
|
||||
283 FISHER 1 1 V V
|
||||
284 FISHERINV 1 1 V V
|
||||
285 FLOOR 2 2 V V V
|
||||
286 GAMMADIST 4 4 V V V V V
|
||||
287 GAMMAINV 3 3 V V V V
|
||||
288 CEILING 2 2 V V V
|
||||
289 HYPGEOMDIST 4 4 V V V V V
|
||||
290 LOGNORMDIST 3 3 V V V V
|
||||
291 LOGINV 3 3 V V V V
|
||||
292 NEGBINOMDIST 3 3 V V V V
|
||||
293 NORMDIST 4 4 V V V V V
|
||||
294 NORMSDIST 1 1 V V
|
||||
295 NORMINV 3 3 V V V V
|
||||
296 NORMSINV 1 1 V V
|
||||
297 STANDARDIZE 3 3 V V V V
|
||||
298 ODD 1 1 V V
|
||||
299 PERMUT 2 2 V V V
|
||||
300 POISSON 3 3 V V V V
|
||||
301 TDIST 3 3 V V V V
|
||||
302 WEIBULL 4 4 V V V V V
|
||||
303 SUMXMY2 2 2 V A A
|
||||
304 SUMX2MY2 2 2 V A A
|
||||
305 SUMX2PY2 2 2 V A A
|
||||
306 CHITEST 2 2 V A A
|
||||
307 CORREL 2 2 V A A
|
||||
308 COVAR 2 2 V A A
|
||||
309 FORECAST 3 3 V V A A
|
||||
310 FTEST 2 2 V A A
|
||||
311 INTERCEPT 2 2 V A A
|
||||
312 PEARSON 2 2 V A A
|
||||
313 RSQ 2 2 V A A
|
||||
314 STEYX 2 2 V A A
|
||||
315 SLOPE 2 2 V A A
|
||||
316 TTEST 4 4 V A A V V
|
||||
317 PROB 3 4 V A A V V
|
||||
318 DEVSQ 1 30 V R ...
|
||||
319 GEOMEAN 1 30 V R ...
|
||||
320 HARMEAN 1 30 V R ...
|
||||
321 SUMSQ 0 30 V R ...
|
||||
322 KURT 1 30 V R ...
|
||||
323 SKEW 1 30 V R ...
|
||||
324 ZTEST 2 3 V R V V
|
||||
325 LARGE 2 2 V R V
|
||||
326 SMALL 2 2 V R V
|
||||
327 QUARTILE 2 2 V R V
|
||||
328 PERCENTILE 2 2 V R V
|
||||
329 PERCENTRANK 2 3 V R V V
|
||||
330 MODE 1 30 V A
|
||||
331 TRIMMEAN 2 2 V R V
|
||||
332 TINV 2 2 V V V
|
||||
# New Built-In Sheet Functions in BIFF5
|
||||
70 WEEKDAY 1 2 V V V x
|
||||
101 HLOOKUP 3 4 V V R R V x
|
||||
102 VLOOKUP 3 4 V V R R V x
|
||||
220 DAYS360 2 3 V V V V x
|
||||
336 CONCATENATE 0 30 V V
|
||||
337 POWER 2 2 V V V
|
||||
342 RADIANS 1 1 V V
|
||||
343 DEGREES 1 1 V V
|
||||
344 SUBTOTAL 2 30 V V R
|
||||
345 SUMIF 2 3 V R V R
|
||||
346 COUNTIF 2 2 V R V
|
||||
347 COUNTBLANK 1 1 V R
|
||||
350 ISPMT 4 4 V V V V V
|
||||
351 DATEDIF 3 3 V V V V
|
||||
352 DATESTRING 1 1 V V
|
||||
353 NUMBERSTRING 2 2 V V V
|
||||
354 ROMAN 1 2 V V V
|
||||
# New Built-In Sheet Functions in BIFF8
|
||||
358 GETPIVOTDATA 2 30
|
||||
359 HYPERLINK 1 2 V V V
|
||||
360 PHONETIC 1 1 V R
|
||||
361 AVERAGEA 1 30 V R ...
|
||||
362 MAXA 1 30 V R ...
|
||||
363 MINA 1 30 V R ...
|
||||
364 STDEVPA 1 30 V R ...
|
||||
365 VARPA 1 30 V R ...
|
||||
366 STDEVA 1 30 V R ...
|
||||
367 VARA 1 30 V R ...
|
||||
# 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.
|
||||
|
||||
# Created by (org.apache.poi.hssf.record.formula.function.ExcelFileFormatDocFunctionExtractor)
|
||||
# from source file 'excelfileformat.odt' (size=356107, md5=0x8f789cb6e75594caf068f8e193004ef4)
|
||||
#
|
||||
#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote )
|
||||
|
||||
# Built-In Sheet Functions in BIFF2
|
||||
0 COUNT 0 30 V R
|
||||
1 IF 2 3 R V R R
|
||||
2 ISNA 1 1 V V
|
||||
3 ISERROR 1 1 V V
|
||||
4 SUM 0 30 V R
|
||||
5 AVERAGE 1 30 V R
|
||||
6 MIN 1 30 V R
|
||||
7 MAX 1 30 V R
|
||||
8 ROW 0 1 V R
|
||||
9 COLUMN 0 1 V R
|
||||
10 NA 0 0 V -
|
||||
11 NPV 2 30 V V R
|
||||
12 STDEV 1 30 V R
|
||||
13 DOLLAR 1 2 V V V
|
||||
14 FIXED 2 2 V V V x
|
||||
15 SIN 1 1 V V
|
||||
16 COS 1 1 V V
|
||||
17 TAN 1 1 V V
|
||||
18 ATAN 1 1 V V
|
||||
19 PI 0 0 V -
|
||||
20 SQRT 1 1 V V
|
||||
21 EXP 1 1 V V
|
||||
22 LN 1 1 V V
|
||||
23 LOG10 1 1 V V
|
||||
24 ABS 1 1 V V
|
||||
25 INT 1 1 V V
|
||||
26 SIGN 1 1 V V
|
||||
27 ROUND 2 2 V V V
|
||||
28 LOOKUP 2 3 V V R R
|
||||
29 INDEX 2 4 R R V V V
|
||||
30 REPT 2 2 V V V
|
||||
31 MID 3 3 V V V V
|
||||
32 LEN 1 1 V V
|
||||
33 VALUE 1 1 V V
|
||||
34 TRUE 0 0 V -
|
||||
35 FALSE 0 0 V -
|
||||
36 AND 1 30 V R
|
||||
37 OR 1 30 V R
|
||||
38 NOT 1 1 V V
|
||||
39 MOD 2 2 V V V
|
||||
40 DCOUNT 3 3 V R R R
|
||||
41 DSUM 3 3 V R R R
|
||||
42 DAVERAGE 3 3 V R R R
|
||||
43 DMIN 3 3 V R R R
|
||||
44 DMAX 3 3 V R R R
|
||||
45 DSTDEV 3 3 V R R R
|
||||
46 VAR 1 30 V R
|
||||
47 DVAR 3 3 V R R R
|
||||
48 TEXT 2 2 V V V
|
||||
49 LINEST 1 2 A R R x
|
||||
50 TREND 1 3 A R R R x
|
||||
51 LOGEST 1 2 A R R x
|
||||
52 GROWTH 1 3 A R R R x
|
||||
56 PV 3 5 V V V V V V
|
||||
# Built-In Sheet Functions in BIFF2
|
||||
57 FV 3 5 V V V V V V
|
||||
58 NPER 3 5 V V V V V V
|
||||
59 PMT 3 5 V V V V V V
|
||||
60 RATE 3 6 V V V V V V V
|
||||
61 MIRR 3 3 V R V V
|
||||
62 IRR 1 2 V R V
|
||||
63 RAND 0 0 V - x
|
||||
64 MATCH 2 3 V V R R
|
||||
65 DATE 3 3 V V V V
|
||||
66 TIME 3 3 V V V V
|
||||
67 DAY 1 1 V V
|
||||
68 MONTH 1 1 V V
|
||||
69 YEAR 1 1 V V
|
||||
70 WEEKDAY 1 1 V V x
|
||||
71 HOUR 1 1 V V
|
||||
72 MINUTE 1 1 V V
|
||||
73 SECOND 1 1 V V
|
||||
74 NOW 0 0 V - x
|
||||
75 AREAS 1 1 V R
|
||||
76 ROWS 1 1 V R
|
||||
77 COLUMNS 1 1 V R
|
||||
78 OFFSET 3 5 R R V V V V x
|
||||
82 SEARCH 2 3 V V V V
|
||||
83 TRANSPOSE 1 1 A A
|
||||
86 TYPE 1 1 V V
|
||||
97 ATAN2 2 2 V V V
|
||||
98 ASIN 1 1 V V
|
||||
99 ACOS 1 1 V V
|
||||
100 CHOOSE 2 30 R V R
|
||||
101 HLOOKUP 3 3 V V R R x
|
||||
102 VLOOKUP 3 3 V V R R x
|
||||
105 ISREF 1 1 V R
|
||||
109 LOG 1 2 V V V
|
||||
111 CHAR 1 1 V V
|
||||
112 LOWER 1 1 V V
|
||||
113 UPPER 1 1 V V
|
||||
114 PROPER 1 1 V V
|
||||
115 LEFT 1 2 V V V
|
||||
116 RIGHT 1 2 V V V
|
||||
117 EXACT 2 2 V V V
|
||||
118 TRIM 1 1 V V
|
||||
119 REPLACE 4 4 V V V V V
|
||||
120 SUBSTITUTE 3 4 V V V V V
|
||||
121 CODE 1 1 V V
|
||||
124 FIND 2 3 V V V V
|
||||
125 CELL 1 2 V V R x
|
||||
126 ISERR 1 1 V V
|
||||
127 ISTEXT 1 1 V V
|
||||
128 ISNUMBER 1 1 V V
|
||||
129 ISBLANK 1 1 V V
|
||||
130 T 1 1 V R
|
||||
131 N 1 1 V R
|
||||
140 DATEVALUE 1 1 V V
|
||||
141 TIMEVALUE 1 1 V V
|
||||
142 SLN 3 3 V V V V
|
||||
143 SYD 4 4 V V V V V
|
||||
144 DDB 4 5 V V V V V V
|
||||
148 INDIRECT 1 2 R V V x
|
||||
162 CLEAN 1 1 V V
|
||||
163 MDETERM 1 1 V A
|
||||
164 MINVERSE 1 1 A A
|
||||
165 MMULT 2 2 A A A
|
||||
167 IPMT 4 6 V V V V V V V
|
||||
168 PPMT 4 6 V V V V V V V
|
||||
169 COUNTA 0 30 V R
|
||||
183 PRODUCT 0 30 V R
|
||||
184 FACT 1 1 V V
|
||||
189 DPRODUCT 3 3 V R R R
|
||||
190 ISNONTEXT 1 1 V V
|
||||
193 STDEVP 1 30 V R
|
||||
194 VARP 1 30 V R
|
||||
195 DSTDEVP 3 3 V R R R
|
||||
196 DVARP 3 3 V R R R
|
||||
197 TRUNC 1 1 V V x
|
||||
198 ISLOGICAL 1 1 V V
|
||||
199 DCOUNTA 3 3 V R R R
|
||||
# New Built-In Sheet Functions in BIFF3
|
||||
49 LINEST 1 4 A R R V V x
|
||||
50 TREND 1 4 A R R R V x
|
||||
51 LOGEST 1 4 A R R V V x
|
||||
52 GROWTH 1 4 A R R R V x
|
||||
197 TRUNC 1 2 V V V x
|
||||
204 YEN 1 2 V V V x
|
||||
205 FINDB 2 3 V V V V
|
||||
206 SEARCHB 2 3 V V V V
|
||||
207 REPLACEB 4 4 V V V V V
|
||||
208 LEFTB 1 2 V V V
|
||||
209 RIGHTB 1 2 V V V
|
||||
210 MIDB 3 3 V V V V
|
||||
211 LENB 1 1 V V
|
||||
212 ROUNDUP 2 2 V V V
|
||||
213 ROUNDDOWN 2 2 V V V
|
||||
214 ASC 1 1 V V
|
||||
215 JIS 1 1 V V x
|
||||
219 ADDRESS 2 5 V V V V V V
|
||||
220 DAYS360 2 2 V V V x
|
||||
221 TODAY 0 0 V - x
|
||||
222 VDB 5 7 V V V V V V V V
|
||||
227 MEDIAN 1 30 V R ...
|
||||
228 SUMPRODUCT 1 30 V A ...
|
||||
229 SINH 1 1 V V
|
||||
230 COSH 1 1 V V
|
||||
231 TANH 1 1 V V
|
||||
232 ASINH 1 1 V V
|
||||
233 ACOSH 1 1 V V
|
||||
234 ATANH 1 1 V V
|
||||
235 DGET 3 3 V R R R
|
||||
244 INFO 1 1 V V
|
||||
# New Built-In Sheet Functions in BIFF4
|
||||
14 FIXED 2 3 V V V V x
|
||||
204 USDOLLAR 1 2 V V V x
|
||||
215 DBCS 1 1 V V x
|
||||
216 RANK 2 3 V V R V
|
||||
247 DB 4 5 V V V V V V
|
||||
252 FREQUENCY 2 2 A R R
|
||||
261 ERROR.TYPE 1 1 V V
|
||||
269 AVEDEV 1 30 V R ...
|
||||
270 BETADIST 3 5 V V V V V V
|
||||
271 GAMMALN 1 1 V V
|
||||
272 BETAINV 3 5 V V V V V V
|
||||
273 BINOMDIST 4 4 V V V V V
|
||||
274 CHIDIST 2 2 V V V
|
||||
275 CHIINV 2 2 V V V
|
||||
276 COMBIN 2 2 V V V
|
||||
277 CONFIDENCE 3 3 V V V V
|
||||
278 CRITBINOM 3 3 V V V V
|
||||
279 EVEN 1 1 V V
|
||||
280 EXPONDIST 3 3 V V V V
|
||||
281 FDIST 3 3 V V V V
|
||||
282 FINV 3 3 V V V V
|
||||
283 FISHER 1 1 V V
|
||||
284 FISHERINV 1 1 V V
|
||||
285 FLOOR 2 2 V V V
|
||||
286 GAMMADIST 4 4 V V V V V
|
||||
287 GAMMAINV 3 3 V V V V
|
||||
288 CEILING 2 2 V V V
|
||||
289 HYPGEOMDIST 4 4 V V V V V
|
||||
290 LOGNORMDIST 3 3 V V V V
|
||||
291 LOGINV 3 3 V V V V
|
||||
292 NEGBINOMDIST 3 3 V V V V
|
||||
293 NORMDIST 4 4 V V V V V
|
||||
294 NORMSDIST 1 1 V V
|
||||
295 NORMINV 3 3 V V V V
|
||||
296 NORMSINV 1 1 V V
|
||||
297 STANDARDIZE 3 3 V V V V
|
||||
298 ODD 1 1 V V
|
||||
299 PERMUT 2 2 V V V
|
||||
300 POISSON 3 3 V V V V
|
||||
301 TDIST 3 3 V V V V
|
||||
302 WEIBULL 4 4 V V V V V
|
||||
303 SUMXMY2 2 2 V A A
|
||||
304 SUMX2MY2 2 2 V A A
|
||||
305 SUMX2PY2 2 2 V A A
|
||||
306 CHITEST 2 2 V A A
|
||||
307 CORREL 2 2 V A A
|
||||
308 COVAR 2 2 V A A
|
||||
309 FORECAST 3 3 V V A A
|
||||
310 FTEST 2 2 V A A
|
||||
311 INTERCEPT 2 2 V A A
|
||||
312 PEARSON 2 2 V A A
|
||||
313 RSQ 2 2 V A A
|
||||
314 STEYX 2 2 V A A
|
||||
315 SLOPE 2 2 V A A
|
||||
316 TTEST 4 4 V A A V V
|
||||
317 PROB 3 4 V A A V V
|
||||
318 DEVSQ 1 30 V R ...
|
||||
319 GEOMEAN 1 30 V R ...
|
||||
320 HARMEAN 1 30 V R ...
|
||||
321 SUMSQ 0 30 V R ...
|
||||
322 KURT 1 30 V R ...
|
||||
323 SKEW 1 30 V R ...
|
||||
324 ZTEST 2 3 V R V V
|
||||
325 LARGE 2 2 V R V
|
||||
326 SMALL 2 2 V R V
|
||||
327 QUARTILE 2 2 V R V
|
||||
328 PERCENTILE 2 2 V R V
|
||||
329 PERCENTRANK 2 3 V R V V
|
||||
330 MODE 1 30 V A
|
||||
331 TRIMMEAN 2 2 V R V
|
||||
332 TINV 2 2 V V V
|
||||
# New Built-In Sheet Functions in BIFF5
|
||||
70 WEEKDAY 1 2 V V V x
|
||||
101 HLOOKUP 3 4 V V R R V x
|
||||
102 VLOOKUP 3 4 V V R R V x
|
||||
220 DAYS360 2 3 V V V V x
|
||||
336 CONCATENATE 0 30 V V
|
||||
337 POWER 2 2 V V V
|
||||
342 RADIANS 1 1 V V
|
||||
343 DEGREES 1 1 V V
|
||||
344 SUBTOTAL 2 30 V V R
|
||||
345 SUMIF 2 3 V R V R
|
||||
346 COUNTIF 2 2 V R V
|
||||
347 COUNTBLANK 1 1 V R
|
||||
350 ISPMT 4 4 V V V V V
|
||||
351 DATEDIF 3 3 V V V V
|
||||
352 DATESTRING 1 1 V V
|
||||
353 NUMBERSTRING 2 2 V V V
|
||||
354 ROMAN 1 2 V V V
|
||||
# New Built-In Sheet Functions in BIFF8
|
||||
358 GETPIVOTDATA 2 30
|
||||
359 HYPERLINK 1 2 V V V
|
||||
360 PHONETIC 1 1 V R
|
||||
361 AVERAGEA 1 30 V R ...
|
||||
362 MAXA 1 30 V R ...
|
||||
363 MINA 1 30 V R ...
|
||||
364 STDEVPA 1 30 V R ...
|
||||
365 VARPA 1 30 V R ...
|
||||
366 STDEVA 1 30 V R ...
|
||||
367 VARA 1 30 V R ...
|
||||
|
@ -1,286 +1,286 @@
|
||||
# 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.
|
||||
|
||||
# Created by (org.apache.poi.hssf.record.formula.function.ExcelFileFormatDocFunctionExtractor)
|
||||
# from source file 'excelfileformat.odt' (size=356107, md5=0x8f789cb6e75594caf068f8e193004ef4)
|
||||
# ! + some manual edits !
|
||||
#
|
||||
#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote )
|
||||
|
||||
# Built-In Sheet Functions in BIFF2
|
||||
0 COUNT 0 30 V R
|
||||
1 IF 2 3 R V R R
|
||||
2 ISNA 1 1 V V
|
||||
3 ISERROR 1 1 V V
|
||||
4 SUM 0 30 V R
|
||||
5 AVERAGE 1 30 V R
|
||||
6 MIN 1 30 V R
|
||||
7 MAX 1 30 V R
|
||||
8 ROW 0 1 V R
|
||||
9 COLUMN 0 1 V R
|
||||
10 NA 0 0 V -
|
||||
11 NPV 2 30 V V R
|
||||
12 STDEV 1 30 V R
|
||||
13 DOLLAR 1 2 V V V
|
||||
14 FIXED 2 2 V V V x
|
||||
15 SIN 1 1 V V
|
||||
16 COS 1 1 V V
|
||||
17 TAN 1 1 V V
|
||||
18 ATAN 1 1 V V
|
||||
19 PI 0 0 V -
|
||||
20 SQRT 1 1 V V
|
||||
21 EXP 1 1 V V
|
||||
22 LN 1 1 V V
|
||||
23 LOG10 1 1 V V
|
||||
24 ABS 1 1 V V
|
||||
25 INT 1 1 V V
|
||||
26 SIGN 1 1 V V
|
||||
27 ROUND 2 2 V V V
|
||||
28 LOOKUP 2 3 V V R R
|
||||
29 INDEX 2 4 R R V V V
|
||||
30 REPT 2 2 V V V
|
||||
31 MID 3 3 V V V V
|
||||
32 LEN 1 1 V V
|
||||
33 VALUE 1 1 V V
|
||||
34 TRUE 0 0 V -
|
||||
35 FALSE 0 0 V -
|
||||
36 AND 1 30 V R
|
||||
37 OR 1 30 V R
|
||||
38 NOT 1 1 V V
|
||||
39 MOD 2 2 V V V
|
||||
40 DCOUNT 3 3 V R R R
|
||||
41 DSUM 3 3 V R R R
|
||||
42 DAVERAGE 3 3 V R R R
|
||||
43 DMIN 3 3 V R R R
|
||||
44 DMAX 3 3 V R R R
|
||||
45 DSTDEV 3 3 V R R R
|
||||
46 VAR 1 30 V R
|
||||
47 DVAR 3 3 V R R R
|
||||
48 TEXT 2 2 V V V
|
||||
49 LINEST 1 2 A R R x
|
||||
50 TREND 1 3 A R R R x
|
||||
51 LOGEST 1 2 A R R x
|
||||
52 GROWTH 1 3 A R R R x
|
||||
56 PV 3 5 V V V V V V
|
||||
# Built-In Sheet Functions in BIFF2
|
||||
57 FV 3 5 V V V V V V
|
||||
58 NPER 3 5 V V V V V V
|
||||
59 PMT 3 5 V V V V V V
|
||||
60 RATE 3 6 V V V V V V V
|
||||
61 MIRR 3 3 V A V V
|
||||
62 IRR 1 2 V A V
|
||||
63 RAND 0 0 V - x
|
||||
64 MATCH 2 3 V V R R
|
||||
65 DATE 3 3 V V V V
|
||||
66 TIME 3 3 V V V V
|
||||
67 DAY 1 1 V V
|
||||
68 MONTH 1 1 V V
|
||||
69 YEAR 1 1 V V
|
||||
70 WEEKDAY 1 1 V V x
|
||||
71 HOUR 1 1 V V
|
||||
72 MINUTE 1 1 V V
|
||||
73 SECOND 1 1 V V
|
||||
74 NOW 0 0 V - x
|
||||
75 AREAS 1 1 V R
|
||||
76 ROWS 1 1 V A
|
||||
77 COLUMNS 1 1 V A
|
||||
78 OFFSET 3 5 R R V V V V x
|
||||
82 SEARCH 2 3 V V V V
|
||||
83 TRANSPOSE 1 1 A A
|
||||
86 TYPE 1 1 V V
|
||||
97 ATAN2 2 2 V V V
|
||||
98 ASIN 1 1 V V
|
||||
99 ACOS 1 1 V V
|
||||
100 CHOOSE 2 30 R V R
|
||||
101 HLOOKUP 3 3 V V R R x
|
||||
102 VLOOKUP 3 3 V V R R x
|
||||
105 ISREF 1 1 V R
|
||||
109 LOG 1 2 V V V
|
||||
111 CHAR 1 1 V V
|
||||
112 LOWER 1 1 V V
|
||||
113 UPPER 1 1 V V
|
||||
114 PROPER 1 1 V V
|
||||
115 LEFT 1 2 V V V
|
||||
116 RIGHT 1 2 V V V
|
||||
117 EXACT 2 2 V V V
|
||||
118 TRIM 1 1 V V
|
||||
119 REPLACE 4 4 V V V V V
|
||||
120 SUBSTITUTE 3 4 V V V V V
|
||||
121 CODE 1 1 V V
|
||||
124 FIND 2 3 V V V V
|
||||
125 CELL 1 2 V V R x
|
||||
126 ISERR 1 1 V V
|
||||
127 ISTEXT 1 1 V V
|
||||
128 ISNUMBER 1 1 V V
|
||||
129 ISBLANK 1 1 V V
|
||||
130 T 1 1 V R
|
||||
131 N 1 1 V R
|
||||
140 DATEVALUE 1 1 V V
|
||||
141 TIMEVALUE 1 1 V V
|
||||
142 SLN 3 3 V V V V
|
||||
143 SYD 4 4 V V V V V
|
||||
144 DDB 4 5 V V V V V V
|
||||
148 INDIRECT 1 2 R V V x
|
||||
162 CLEAN 1 1 V V
|
||||
163 MDETERM 1 1 V A
|
||||
164 MINVERSE 1 1 A A
|
||||
165 MMULT 2 2 A A A
|
||||
167 IPMT 4 6 V V V V V V V
|
||||
168 PPMT 4 6 V V V V V V V
|
||||
169 COUNTA 0 30 V R
|
||||
183 PRODUCT 0 30 V R
|
||||
184 FACT 1 1 V V
|
||||
189 DPRODUCT 3 3 V R R R
|
||||
190 ISNONTEXT 1 1 V V
|
||||
193 STDEVP 1 30 V R
|
||||
194 VARP 1 30 V R
|
||||
195 DSTDEVP 3 3 V R R R
|
||||
196 DVARP 3 3 V R R R
|
||||
197 TRUNC 1 1 V V x
|
||||
198 ISLOGICAL 1 1 V V
|
||||
199 DCOUNTA 3 3 V R R R
|
||||
# New Built-In Sheet Functions in BIFF3
|
||||
49 LINEST 1 4 A R R V V x
|
||||
50 TREND 1 4 A R R R V x
|
||||
51 LOGEST 1 4 A R R V V x
|
||||
52 GROWTH 1 4 A R R R V x
|
||||
197 TRUNC 1 2 V V V x
|
||||
204 YEN 1 2 V V V x
|
||||
205 FINDB 2 3 V V V V
|
||||
206 SEARCHB 2 3 V V V V
|
||||
207 REPLACEB 4 4 V V V V V
|
||||
208 LEFTB 1 2 V V V
|
||||
209 RIGHTB 1 2 V V V
|
||||
210 MIDB 3 3 V V V V
|
||||
211 LENB 1 1 V V
|
||||
212 ROUNDUP 2 2 V V V
|
||||
213 ROUNDDOWN 2 2 V V V
|
||||
214 ASC 1 1 V V
|
||||
215 JIS 1 1 V V x
|
||||
219 ADDRESS 2 5 V V V V V V
|
||||
220 DAYS360 2 2 V V V x
|
||||
221 TODAY 0 0 V - x
|
||||
222 VDB 5 7 V V V V V V V V
|
||||
227 MEDIAN 1 30 V R ...
|
||||
228 SUMPRODUCT 1 30 V A ...
|
||||
229 SINH 1 1 V V
|
||||
230 COSH 1 1 V V
|
||||
231 TANH 1 1 V V
|
||||
232 ASINH 1 1 V V
|
||||
233 ACOSH 1 1 V V
|
||||
234 ATANH 1 1 V V
|
||||
235 DGET 3 3 V R R R
|
||||
244 INFO 1 1 V V
|
||||
# New Built-In Sheet Functions in BIFF4
|
||||
14 FIXED 2 3 V V V V x
|
||||
204 USDOLLAR 1 2 V V V x
|
||||
215 DBCS 1 1 V V x
|
||||
216 RANK 2 3 V V R V
|
||||
247 DB 4 5 V V V V V V
|
||||
252 FREQUENCY 2 2 A R R
|
||||
261 ERROR.TYPE 1 1 V V
|
||||
269 AVEDEV 1 30 V R ...
|
||||
270 BETADIST 3 5 V V V V V V
|
||||
271 GAMMALN 1 1 V V
|
||||
272 BETAINV 3 5 V V V V V V
|
||||
273 BINOMDIST 4 4 V V V V V
|
||||
274 CHIDIST 2 2 V V V
|
||||
275 CHIINV 2 2 V V V
|
||||
276 COMBIN 2 2 V V V
|
||||
277 CONFIDENCE 3 3 V V V V
|
||||
278 CRITBINOM 3 3 V V V V
|
||||
279 EVEN 1 1 V V
|
||||
280 EXPONDIST 3 3 V V V V
|
||||
281 FDIST 3 3 V V V V
|
||||
282 FINV 3 3 V V V V
|
||||
283 FISHER 1 1 V V
|
||||
284 FISHERINV 1 1 V V
|
||||
285 FLOOR 2 2 V V V
|
||||
286 GAMMADIST 4 4 V V V V V
|
||||
287 GAMMAINV 3 3 V V V V
|
||||
288 CEILING 2 2 V V V
|
||||
289 HYPGEOMDIST 4 4 V V V V V
|
||||
290 LOGNORMDIST 3 3 V V V V
|
||||
291 LOGINV 3 3 V V V V
|
||||
292 NEGBINOMDIST 3 3 V V V V
|
||||
293 NORMDIST 4 4 V V V V V
|
||||
294 NORMSDIST 1 1 V V
|
||||
295 NORMINV 3 3 V V V V
|
||||
296 NORMSINV 1 1 V V
|
||||
297 STANDARDIZE 3 3 V V V V
|
||||
298 ODD 1 1 V V
|
||||
299 PERMUT 2 2 V V V
|
||||
300 POISSON 3 3 V V V V
|
||||
301 TDIST 3 3 V V V V
|
||||
302 WEIBULL 4 4 V V V V V
|
||||
303 SUMXMY2 2 2 V A A
|
||||
304 SUMX2MY2 2 2 V A A
|
||||
305 SUMX2PY2 2 2 V A A
|
||||
306 CHITEST 2 2 V A A
|
||||
307 CORREL 2 2 V A A
|
||||
308 COVAR 2 2 V A A
|
||||
309 FORECAST 3 3 V V A A
|
||||
310 FTEST 2 2 V A A
|
||||
311 INTERCEPT 2 2 V A A
|
||||
312 PEARSON 2 2 V A A
|
||||
313 RSQ 2 2 V A A
|
||||
314 STEYX 2 2 V A A
|
||||
315 SLOPE 2 2 V A A
|
||||
316 TTEST 4 4 V A A V V
|
||||
317 PROB 3 4 V A A V V
|
||||
318 DEVSQ 1 30 V R ...
|
||||
319 GEOMEAN 1 30 V R ...
|
||||
320 HARMEAN 1 30 V R ...
|
||||
321 SUMSQ 0 30 V R ...
|
||||
322 KURT 1 30 V R ...
|
||||
323 SKEW 1 30 V R ...
|
||||
324 ZTEST 2 3 V R V V
|
||||
325 LARGE 2 2 V R V
|
||||
326 SMALL 2 2 V R V
|
||||
327 QUARTILE 2 2 V R V
|
||||
328 PERCENTILE 2 2 V R V
|
||||
329 PERCENTRANK 2 3 V R V V
|
||||
330 MODE 1 30 V A
|
||||
331 TRIMMEAN 2 2 V R V
|
||||
332 TINV 2 2 V V V
|
||||
# New Built-In Sheet Functions in BIFF5
|
||||
70 WEEKDAY 1 2 V V V x
|
||||
101 HLOOKUP 3 4 V V R R V x
|
||||
102 VLOOKUP 3 4 V V R R V x
|
||||
220 DAYS360 2 3 V V V V x
|
||||
336 CONCATENATE 0 30 V V
|
||||
337 POWER 2 2 V V V
|
||||
342 RADIANS 1 1 V V
|
||||
343 DEGREES 1 1 V V
|
||||
344 SUBTOTAL 2 30 V V R
|
||||
345 SUMIF 2 3 V R V R
|
||||
346 COUNTIF 2 2 V R V
|
||||
347 COUNTBLANK 1 1 V R
|
||||
350 ISPMT 4 4 V V V V V
|
||||
351 DATEDIF 3 3 V V V V
|
||||
352 DATESTRING 1 1 V V
|
||||
353 NUMBERSTRING 2 2 V V V
|
||||
354 ROMAN 1 2 V V V
|
||||
# New Built-In Sheet Functions in BIFF8
|
||||
358 GETPIVOTDATA 2 30
|
||||
359 HYPERLINK 1 2 V V V
|
||||
360 PHONETIC 1 1 V R
|
||||
361 AVERAGEA 1 30 V R ...
|
||||
362 MAXA 1 30 V R ...
|
||||
363 MINA 1 30 V R ...
|
||||
364 STDEVPA 1 30 V R ...
|
||||
365 VARPA 1 30 V R ...
|
||||
366 STDEVA 1 30 V R ...
|
||||
367 VARA 1 30 V R ...
|
||||
# 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.
|
||||
|
||||
# Created by (org.apache.poi.hssf.record.formula.function.ExcelFileFormatDocFunctionExtractor)
|
||||
# from source file 'excelfileformat.odt' (size=356107, md5=0x8f789cb6e75594caf068f8e193004ef4)
|
||||
# ! + some manual edits !
|
||||
#
|
||||
#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote )
|
||||
|
||||
# Built-In Sheet Functions in BIFF2
|
||||
0 COUNT 0 30 V R
|
||||
1 IF 2 3 R V R R
|
||||
2 ISNA 1 1 V V
|
||||
3 ISERROR 1 1 V V
|
||||
4 SUM 0 30 V R
|
||||
5 AVERAGE 1 30 V R
|
||||
6 MIN 1 30 V R
|
||||
7 MAX 1 30 V R
|
||||
8 ROW 0 1 V R
|
||||
9 COLUMN 0 1 V R
|
||||
10 NA 0 0 V -
|
||||
11 NPV 2 30 V V R
|
||||
12 STDEV 1 30 V R
|
||||
13 DOLLAR 1 2 V V V
|
||||
14 FIXED 2 2 V V V x
|
||||
15 SIN 1 1 V V
|
||||
16 COS 1 1 V V
|
||||
17 TAN 1 1 V V
|
||||
18 ATAN 1 1 V V
|
||||
19 PI 0 0 V -
|
||||
20 SQRT 1 1 V V
|
||||
21 EXP 1 1 V V
|
||||
22 LN 1 1 V V
|
||||
23 LOG10 1 1 V V
|
||||
24 ABS 1 1 V V
|
||||
25 INT 1 1 V V
|
||||
26 SIGN 1 1 V V
|
||||
27 ROUND 2 2 V V V
|
||||
28 LOOKUP 2 3 V V R R
|
||||
29 INDEX 2 4 R R V V V
|
||||
30 REPT 2 2 V V V
|
||||
31 MID 3 3 V V V V
|
||||
32 LEN 1 1 V V
|
||||
33 VALUE 1 1 V V
|
||||
34 TRUE 0 0 V -
|
||||
35 FALSE 0 0 V -
|
||||
36 AND 1 30 V R
|
||||
37 OR 1 30 V R
|
||||
38 NOT 1 1 V V
|
||||
39 MOD 2 2 V V V
|
||||
40 DCOUNT 3 3 V R R R
|
||||
41 DSUM 3 3 V R R R
|
||||
42 DAVERAGE 3 3 V R R R
|
||||
43 DMIN 3 3 V R R R
|
||||
44 DMAX 3 3 V R R R
|
||||
45 DSTDEV 3 3 V R R R
|
||||
46 VAR 1 30 V R
|
||||
47 DVAR 3 3 V R R R
|
||||
48 TEXT 2 2 V V V
|
||||
49 LINEST 1 2 A R R x
|
||||
50 TREND 1 3 A R R R x
|
||||
51 LOGEST 1 2 A R R x
|
||||
52 GROWTH 1 3 A R R R x
|
||||
56 PV 3 5 V V V V V V
|
||||
# Built-In Sheet Functions in BIFF2
|
||||
57 FV 3 5 V V V V V V
|
||||
58 NPER 3 5 V V V V V V
|
||||
59 PMT 3 5 V V V V V V
|
||||
60 RATE 3 6 V V V V V V V
|
||||
61 MIRR 3 3 V A V V
|
||||
62 IRR 1 2 V A V
|
||||
63 RAND 0 0 V - x
|
||||
64 MATCH 2 3 V V R R
|
||||
65 DATE 3 3 V V V V
|
||||
66 TIME 3 3 V V V V
|
||||
67 DAY 1 1 V V
|
||||
68 MONTH 1 1 V V
|
||||
69 YEAR 1 1 V V
|
||||
70 WEEKDAY 1 1 V V x
|
||||
71 HOUR 1 1 V V
|
||||
72 MINUTE 1 1 V V
|
||||
73 SECOND 1 1 V V
|
||||
74 NOW 0 0 V - x
|
||||
75 AREAS 1 1 V R
|
||||
76 ROWS 1 1 V A
|
||||
77 COLUMNS 1 1 V A
|
||||
78 OFFSET 3 5 R R V V V V x
|
||||
82 SEARCH 2 3 V V V V
|
||||
83 TRANSPOSE 1 1 A A
|
||||
86 TYPE 1 1 V V
|
||||
97 ATAN2 2 2 V V V
|
||||
98 ASIN 1 1 V V
|
||||
99 ACOS 1 1 V V
|
||||
100 CHOOSE 2 30 R V R
|
||||
101 HLOOKUP 3 3 V V R R x
|
||||
102 VLOOKUP 3 3 V V R R x
|
||||
105 ISREF 1 1 V R
|
||||
109 LOG 1 2 V V V
|
||||
111 CHAR 1 1 V V
|
||||
112 LOWER 1 1 V V
|
||||
113 UPPER 1 1 V V
|
||||
114 PROPER 1 1 V V
|
||||
115 LEFT 1 2 V V V
|
||||
116 RIGHT 1 2 V V V
|
||||
117 EXACT 2 2 V V V
|
||||
118 TRIM 1 1 V V
|
||||
119 REPLACE 4 4 V V V V V
|
||||
120 SUBSTITUTE 3 4 V V V V V
|
||||
121 CODE 1 1 V V
|
||||
124 FIND 2 3 V V V V
|
||||
125 CELL 1 2 V V R x
|
||||
126 ISERR 1 1 V V
|
||||
127 ISTEXT 1 1 V V
|
||||
128 ISNUMBER 1 1 V V
|
||||
129 ISBLANK 1 1 V V
|
||||
130 T 1 1 V R
|
||||
131 N 1 1 V R
|
||||
140 DATEVALUE 1 1 V V
|
||||
141 TIMEVALUE 1 1 V V
|
||||
142 SLN 3 3 V V V V
|
||||
143 SYD 4 4 V V V V V
|
||||
144 DDB 4 5 V V V V V V
|
||||
148 INDIRECT 1 2 R V V x
|
||||
162 CLEAN 1 1 V V
|
||||
163 MDETERM 1 1 V A
|
||||
164 MINVERSE 1 1 A A
|
||||
165 MMULT 2 2 A A A
|
||||
167 IPMT 4 6 V V V V V V V
|
||||
168 PPMT 4 6 V V V V V V V
|
||||
169 COUNTA 0 30 V R
|
||||
183 PRODUCT 0 30 V R
|
||||
184 FACT 1 1 V V
|
||||
189 DPRODUCT 3 3 V R R R
|
||||
190 ISNONTEXT 1 1 V V
|
||||
193 STDEVP 1 30 V R
|
||||
194 VARP 1 30 V R
|
||||
195 DSTDEVP 3 3 V R R R
|
||||
196 DVARP 3 3 V R R R
|
||||
197 TRUNC 1 1 V V x
|
||||
198 ISLOGICAL 1 1 V V
|
||||
199 DCOUNTA 3 3 V R R R
|
||||
# New Built-In Sheet Functions in BIFF3
|
||||
49 LINEST 1 4 A R R V V x
|
||||
50 TREND 1 4 A R R R V x
|
||||
51 LOGEST 1 4 A R R V V x
|
||||
52 GROWTH 1 4 A R R R V x
|
||||
197 TRUNC 1 2 V V V x
|
||||
204 YEN 1 2 V V V x
|
||||
205 FINDB 2 3 V V V V
|
||||
206 SEARCHB 2 3 V V V V
|
||||
207 REPLACEB 4 4 V V V V V
|
||||
208 LEFTB 1 2 V V V
|
||||
209 RIGHTB 1 2 V V V
|
||||
210 MIDB 3 3 V V V V
|
||||
211 LENB 1 1 V V
|
||||
212 ROUNDUP 2 2 V V V
|
||||
213 ROUNDDOWN 2 2 V V V
|
||||
214 ASC 1 1 V V
|
||||
215 JIS 1 1 V V x
|
||||
219 ADDRESS 2 5 V V V V V V
|
||||
220 DAYS360 2 2 V V V x
|
||||
221 TODAY 0 0 V - x
|
||||
222 VDB 5 7 V V V V V V V V
|
||||
227 MEDIAN 1 30 V R ...
|
||||
228 SUMPRODUCT 1 30 V A ...
|
||||
229 SINH 1 1 V V
|
||||
230 COSH 1 1 V V
|
||||
231 TANH 1 1 V V
|
||||
232 ASINH 1 1 V V
|
||||
233 ACOSH 1 1 V V
|
||||
234 ATANH 1 1 V V
|
||||
235 DGET 3 3 V R R R
|
||||
244 INFO 1 1 V V
|
||||
# New Built-In Sheet Functions in BIFF4
|
||||
14 FIXED 2 3 V V V V x
|
||||
204 USDOLLAR 1 2 V V V x
|
||||
215 DBCS 1 1 V V x
|
||||
216 RANK 2 3 V V R V
|
||||
247 DB 4 5 V V V V V V
|
||||
252 FREQUENCY 2 2 A R R
|
||||
261 ERROR.TYPE 1 1 V V
|
||||
269 AVEDEV 1 30 V R ...
|
||||
270 BETADIST 3 5 V V V V V V
|
||||
271 GAMMALN 1 1 V V
|
||||
272 BETAINV 3 5 V V V V V V
|
||||
273 BINOMDIST 4 4 V V V V V
|
||||
274 CHIDIST 2 2 V V V
|
||||
275 CHIINV 2 2 V V V
|
||||
276 COMBIN 2 2 V V V
|
||||
277 CONFIDENCE 3 3 V V V V
|
||||
278 CRITBINOM 3 3 V V V V
|
||||
279 EVEN 1 1 V V
|
||||
280 EXPONDIST 3 3 V V V V
|
||||
281 FDIST 3 3 V V V V
|
||||
282 FINV 3 3 V V V V
|
||||
283 FISHER 1 1 V V
|
||||
284 FISHERINV 1 1 V V
|
||||
285 FLOOR 2 2 V V V
|
||||
286 GAMMADIST 4 4 V V V V V
|
||||
287 GAMMAINV 3 3 V V V V
|
||||
288 CEILING 2 2 V V V
|
||||
289 HYPGEOMDIST 4 4 V V V V V
|
||||
290 LOGNORMDIST 3 3 V V V V
|
||||
291 LOGINV 3 3 V V V V
|
||||
292 NEGBINOMDIST 3 3 V V V V
|
||||
293 NORMDIST 4 4 V V V V V
|
||||
294 NORMSDIST 1 1 V V
|
||||
295 NORMINV 3 3 V V V V
|
||||
296 NORMSINV 1 1 V V
|
||||
297 STANDARDIZE 3 3 V V V V
|
||||
298 ODD 1 1 V V
|
||||
299 PERMUT 2 2 V V V
|
||||
300 POISSON 3 3 V V V V
|
||||
301 TDIST 3 3 V V V V
|
||||
302 WEIBULL 4 4 V V V V V
|
||||
303 SUMXMY2 2 2 V A A
|
||||
304 SUMX2MY2 2 2 V A A
|
||||
305 SUMX2PY2 2 2 V A A
|
||||
306 CHITEST 2 2 V A A
|
||||
307 CORREL 2 2 V A A
|
||||
308 COVAR 2 2 V A A
|
||||
309 FORECAST 3 3 V V A A
|
||||
310 FTEST 2 2 V A A
|
||||
311 INTERCEPT 2 2 V A A
|
||||
312 PEARSON 2 2 V A A
|
||||
313 RSQ 2 2 V A A
|
||||
314 STEYX 2 2 V A A
|
||||
315 SLOPE 2 2 V A A
|
||||
316 TTEST 4 4 V A A V V
|
||||
317 PROB 3 4 V A A V V
|
||||
318 DEVSQ 1 30 V R ...
|
||||
319 GEOMEAN 1 30 V R ...
|
||||
320 HARMEAN 1 30 V R ...
|
||||
321 SUMSQ 0 30 V R ...
|
||||
322 KURT 1 30 V R ...
|
||||
323 SKEW 1 30 V R ...
|
||||
324 ZTEST 2 3 V R V V
|
||||
325 LARGE 2 2 V R V
|
||||
326 SMALL 2 2 V R V
|
||||
327 QUARTILE 2 2 V R V
|
||||
328 PERCENTILE 2 2 V R V
|
||||
329 PERCENTRANK 2 3 V R V V
|
||||
330 MODE 1 30 V A
|
||||
331 TRIMMEAN 2 2 V R V
|
||||
332 TINV 2 2 V V V
|
||||
# New Built-In Sheet Functions in BIFF5
|
||||
70 WEEKDAY 1 2 V V V x
|
||||
101 HLOOKUP 3 4 V V R R V x
|
||||
102 VLOOKUP 3 4 V V R R V x
|
||||
220 DAYS360 2 3 V V V V x
|
||||
336 CONCATENATE 0 30 V V
|
||||
337 POWER 2 2 V V V
|
||||
342 RADIANS 1 1 V V
|
||||
343 DEGREES 1 1 V V
|
||||
344 SUBTOTAL 2 30 V V R
|
||||
345 SUMIF 2 3 V R V R
|
||||
346 COUNTIF 2 2 V R V
|
||||
347 COUNTBLANK 1 1 V R
|
||||
350 ISPMT 4 4 V V V V V
|
||||
351 DATEDIF 3 3 V V V V
|
||||
352 DATESTRING 1 1 V V
|
||||
353 NUMBERSTRING 2 2 V V V
|
||||
354 ROMAN 1 2 V V V
|
||||
# New Built-In Sheet Functions in BIFF8
|
||||
358 GETPIVOTDATA 2 30
|
||||
359 HYPERLINK 1 2 V V V
|
||||
360 PHONETIC 1 1 V R
|
||||
361 AVERAGEA 1 30 V R ...
|
||||
362 MAXA 1 30 V R ...
|
||||
363 MINA 1 30 V R ...
|
||||
364 STDEVPA 1 30 V R ...
|
||||
365 VARPA 1 30 V R ...
|
||||
366 STDEVA 1 30 V R ...
|
||||
367 VARA 1 30 V R ...
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user