fix lgtm alerts in examples
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1842707 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
e88fc19ca4
commit
6673fe7ad1
@ -53,7 +53,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|||||||
* Excel Conditional Formatting -- Examples
|
* Excel Conditional Formatting -- Examples
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
* Partly based on the code snippets from
|
* Partly based on the code snippets from
|
||||||
* http://www.contextures.com/xlcondformat03.html
|
* http://www.contextures.com/xlcondformat03.html
|
||||||
* </p>
|
* </p>
|
||||||
*/
|
*/
|
||||||
@ -89,7 +89,7 @@ public class ConditionalFormats {
|
|||||||
|
|
||||||
// print overlapping rule results
|
// print overlapping rule results
|
||||||
evaluateRules(wb, "Overlapping");
|
evaluateRules(wb, "Overlapping");
|
||||||
|
|
||||||
// Write the output to a file
|
// Write the output to a file
|
||||||
String file = "cf-poi.xls";
|
String file = "cf-poi.xls";
|
||||||
if(wb instanceof XSSFWorkbook) {
|
if(wb instanceof XSSFWorkbook) {
|
||||||
@ -178,11 +178,11 @@ public class ConditionalFormats {
|
|||||||
|
|
||||||
sheet.getRow(2).createCell(4).setCellValue("<== Condition 1: Formula Is =$B2>75 (Blue Fill)");
|
sheet.getRow(2).createCell(4).setCellValue("<== Condition 1: Formula Is =$B2>75 (Blue Fill)");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Multiple conditional formatting rules can apply to
|
* Multiple conditional formatting rules can apply to
|
||||||
* one cell, some combining, some beating others.
|
* one cell, some combining, some beating others.
|
||||||
* Done in order of the rules added to the
|
* Done in order of the rules added to the
|
||||||
* SheetConditionalFormatting object
|
* SheetConditionalFormatting object
|
||||||
*/
|
*/
|
||||||
static void overlapping(Sheet sheet) {
|
static void overlapping(Sheet sheet) {
|
||||||
@ -210,39 +210,39 @@ public class ConditionalFormats {
|
|||||||
}
|
}
|
||||||
sheet.autoSizeColumn(0);
|
sheet.autoSizeColumn(0);
|
||||||
sheet.autoSizeColumn(1);
|
sheet.autoSizeColumn(1);
|
||||||
|
|
||||||
sheet.getRow(1).createCell(3).setCellValue("Even rows are blue");
|
sheet.getRow(1).createCell(3).setCellValue("Even rows are blue");
|
||||||
sheet.getRow(2).createCell(3).setCellValue("Multiples of 3 have a grey background");
|
sheet.getRow(2).createCell(3).setCellValue("Multiples of 3 have a grey background");
|
||||||
sheet.getRow(4).createCell(3).setCellValue("Multiples of 5 are bold");
|
sheet.getRow(4).createCell(3).setCellValue("Multiples of 5 are bold");
|
||||||
sheet.getRow(9).createCell(3).setCellValue("Multiples of 10 are red (beats even)");
|
sheet.getRow(9).createCell(3).setCellValue("Multiples of 10 are red (beats even)");
|
||||||
|
|
||||||
SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
|
SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
|
||||||
|
|
||||||
// Condition 1: Row divides by 10, red (will beat #1)
|
// Condition 1: Row divides by 10, red (will beat #1)
|
||||||
ConditionalFormattingRule rule1 =
|
ConditionalFormattingRule rule1 =
|
||||||
sheetCF.createConditionalFormattingRule("MOD(ROW(),10)=0");
|
sheetCF.createConditionalFormattingRule("MOD(ROW(),10)=0");
|
||||||
FontFormatting font1 = rule1.createFontFormatting();
|
FontFormatting font1 = rule1.createFontFormatting();
|
||||||
font1.setFontColorIndex(IndexedColors.RED.index);
|
font1.setFontColorIndex(IndexedColors.RED.index);
|
||||||
|
|
||||||
// Condition 2: Row is even, blue
|
// Condition 2: Row is even, blue
|
||||||
ConditionalFormattingRule rule2 =
|
ConditionalFormattingRule rule2 =
|
||||||
sheetCF.createConditionalFormattingRule("MOD(ROW(),2)=0");
|
sheetCF.createConditionalFormattingRule("MOD(ROW(),2)=0");
|
||||||
FontFormatting font2 = rule2.createFontFormatting();
|
FontFormatting font2 = rule2.createFontFormatting();
|
||||||
font2.setFontColorIndex(IndexedColors.BLUE.index);
|
font2.setFontColorIndex(IndexedColors.BLUE.index);
|
||||||
|
|
||||||
// Condition 3: Row divides by 5, bold
|
// Condition 3: Row divides by 5, bold
|
||||||
ConditionalFormattingRule rule3 =
|
ConditionalFormattingRule rule3 =
|
||||||
sheetCF.createConditionalFormattingRule("MOD(ROW(),5)=0");
|
sheetCF.createConditionalFormattingRule("MOD(ROW(),5)=0");
|
||||||
FontFormatting font3 = rule3.createFontFormatting();
|
FontFormatting font3 = rule3.createFontFormatting();
|
||||||
font3.setFontStyle(false, true);
|
font3.setFontStyle(false, true);
|
||||||
|
|
||||||
// Condition 4: Row divides by 3, grey background
|
// Condition 4: Row divides by 3, grey background
|
||||||
ConditionalFormattingRule rule4 =
|
ConditionalFormattingRule rule4 =
|
||||||
sheetCF.createConditionalFormattingRule("MOD(ROW(),3)=0");
|
sheetCF.createConditionalFormattingRule("MOD(ROW(),3)=0");
|
||||||
PatternFormatting fill4 = rule4.createPatternFormatting();
|
PatternFormatting fill4 = rule4.createPatternFormatting();
|
||||||
fill4.setFillBackgroundColor(IndexedColors.GREY_25_PERCENT.index);
|
fill4.setFillBackgroundColor(IndexedColors.GREY_25_PERCENT.index);
|
||||||
fill4.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
|
fill4.setFillPattern(PatternFormatting.SOLID_FOREGROUND);
|
||||||
|
|
||||||
// Apply
|
// Apply
|
||||||
CellRangeAddress[] regions = {
|
CellRangeAddress[] regions = {
|
||||||
CellRangeAddress.valueOf("A1:F41")
|
CellRangeAddress.valueOf("A1:F41")
|
||||||
@ -441,7 +441,7 @@ public class ConditionalFormats {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* You can use Excel conditional formatting to shade bands of rows on the worksheet.
|
* You can use Excel conditional formatting to shade bands of rows on the worksheet.
|
||||||
* In this example, 3 rows are shaded light grey, and 3 are left with no shading.
|
* In this example, 3 rows are shaded light grey, and 3 are left with no shading.
|
||||||
* In the MOD function, the total number of rows in the set of banded rows (6) is entered.
|
* In the MOD function, the total number of rows in the set of banded rows (6) is entered.
|
||||||
*/
|
*/
|
||||||
@ -462,7 +462,7 @@ public class ConditionalFormats {
|
|||||||
sheet.createRow(0).createCell(1).setCellValue("Shade Bands of Rows");
|
sheet.createRow(0).createCell(1).setCellValue("Shade Bands of Rows");
|
||||||
sheet.createRow(1).createCell(1).setCellValue("Condition: Formula Is =MOD(ROW(),6)<2 (Light Grey Fill)");
|
sheet.createRow(1).createCell(1).setCellValue("Condition: Formula Is =MOD(ROW(),6)<2 (Light Grey Fill)");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Icon Sets / Multi-States allow you to have icons shown which vary
|
* Icon Sets / Multi-States allow you to have icons shown which vary
|
||||||
* based on the values, eg Red traffic light / Yellow traffic light /
|
* based on the values, eg Red traffic light / Yellow traffic light /
|
||||||
@ -487,7 +487,7 @@ public class ConditionalFormats {
|
|||||||
r.createCell(3).setCellValue(10);
|
r.createCell(3).setCellValue(10);
|
||||||
|
|
||||||
SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
|
SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
|
||||||
|
|
||||||
CellRangeAddress[] regions = { CellRangeAddress.valueOf("B1:B4") };
|
CellRangeAddress[] regions = { CellRangeAddress.valueOf("B1:B4") };
|
||||||
ConditionalFormattingRule rule1 =
|
ConditionalFormattingRule rule1 =
|
||||||
sheetCF.createConditionalFormattingRule(IconSet.GYR_3_TRAFFIC_LIGHTS);
|
sheetCF.createConditionalFormattingRule(IconSet.GYR_3_TRAFFIC_LIGHTS);
|
||||||
@ -497,7 +497,7 @@ public class ConditionalFormats {
|
|||||||
im1.getThresholds()[1].setValue(33d);
|
im1.getThresholds()[1].setValue(33d);
|
||||||
im1.getThresholds()[2].setRangeType(RangeType.MAX);
|
im1.getThresholds()[2].setRangeType(RangeType.MAX);
|
||||||
sheetCF.addConditionalFormatting(regions, rule1);
|
sheetCF.addConditionalFormatting(regions, rule1);
|
||||||
|
|
||||||
regions = new CellRangeAddress[] { CellRangeAddress.valueOf("C1:C4") };
|
regions = new CellRangeAddress[] { CellRangeAddress.valueOf("C1:C4") };
|
||||||
ConditionalFormattingRule rule2 =
|
ConditionalFormattingRule rule2 =
|
||||||
sheetCF.createConditionalFormattingRule(IconSet.GYR_3_FLAGS);
|
sheetCF.createConditionalFormattingRule(IconSet.GYR_3_FLAGS);
|
||||||
@ -509,7 +509,7 @@ public class ConditionalFormats {
|
|||||||
im2.getThresholds()[2].setRangeType(RangeType.PERCENT);
|
im2.getThresholds()[2].setRangeType(RangeType.PERCENT);
|
||||||
im2.getThresholds()[2].setValue(67d);
|
im2.getThresholds()[2].setValue(67d);
|
||||||
sheetCF.addConditionalFormatting(regions, rule2);
|
sheetCF.addConditionalFormatting(regions, rule2);
|
||||||
|
|
||||||
regions = new CellRangeAddress[] { CellRangeAddress.valueOf("D1:D4") };
|
regions = new CellRangeAddress[] { CellRangeAddress.valueOf("D1:D4") };
|
||||||
ConditionalFormattingRule rule3 =
|
ConditionalFormattingRule rule3 =
|
||||||
sheetCF.createConditionalFormattingRule(IconSet.GYR_3_SYMBOLS_CIRCLE);
|
sheetCF.createConditionalFormattingRule(IconSet.GYR_3_SYMBOLS_CIRCLE);
|
||||||
@ -522,7 +522,7 @@ public class ConditionalFormats {
|
|||||||
im3.getThresholds()[2].setValue(7d);
|
im3.getThresholds()[2].setValue(7d);
|
||||||
sheetCF.addConditionalFormatting(regions, rule3);
|
sheetCF.addConditionalFormatting(regions, rule3);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Color Scales / Colour Scales / Colour Gradients allow you shade the
|
* Color Scales / Colour Scales / Colour Gradients allow you shade the
|
||||||
* background colour of the cell based on the values, eg from Red to
|
* background colour of the cell based on the values, eg from Red to
|
||||||
@ -533,12 +533,12 @@ public class ConditionalFormats {
|
|||||||
Row r = sheet.createRow(1);
|
Row r = sheet.createRow(1);
|
||||||
r.createCell(0).setCellValue("Red-Yellow-Green");
|
r.createCell(0).setCellValue("Red-Yellow-Green");
|
||||||
for (int i=1; i<=7; i++) {
|
for (int i=1; i<=7; i++) {
|
||||||
r.createCell(i).setCellValue((i-1)*5);
|
r.createCell(i).setCellValue((i-1)*5.0);
|
||||||
}
|
}
|
||||||
r = sheet.createRow(2);
|
r = sheet.createRow(2);
|
||||||
r.createCell(0).setCellValue("Red-White-Blue");
|
r.createCell(0).setCellValue("Red-White-Blue");
|
||||||
for (int i=1; i<=9; i++) {
|
for (int i=1; i<=9; i++) {
|
||||||
r.createCell(i).setCellValue((i-1)*5);
|
r.createCell(i).setCellValue((i-1)*5.0);
|
||||||
}
|
}
|
||||||
r = sheet.createRow(3);
|
r = sheet.createRow(3);
|
||||||
r.createCell(0).setCellValue("Blue-Green");
|
r.createCell(0).setCellValue("Blue-Green");
|
||||||
@ -546,9 +546,9 @@ public class ConditionalFormats {
|
|||||||
r.createCell(i).setCellValue((i-1));
|
r.createCell(i).setCellValue((i-1));
|
||||||
}
|
}
|
||||||
sheet.setColumnWidth(0, 5000);
|
sheet.setColumnWidth(0, 5000);
|
||||||
|
|
||||||
SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
|
SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
|
||||||
|
|
||||||
CellRangeAddress[] regions = { CellRangeAddress.valueOf("B2:H2") };
|
CellRangeAddress[] regions = { CellRangeAddress.valueOf("B2:H2") };
|
||||||
ConditionalFormattingRule rule1 =
|
ConditionalFormattingRule rule1 =
|
||||||
sheetCF.createConditionalFormattingColorScaleRule();
|
sheetCF.createConditionalFormattingColorScaleRule();
|
||||||
@ -561,7 +561,7 @@ public class ConditionalFormats {
|
|||||||
((ExtendedColor)cs1.getColors()[1]).setARGBHex("FFFFEB84");
|
((ExtendedColor)cs1.getColors()[1]).setARGBHex("FFFFEB84");
|
||||||
((ExtendedColor)cs1.getColors()[2]).setARGBHex("FF63BE7B");
|
((ExtendedColor)cs1.getColors()[2]).setARGBHex("FF63BE7B");
|
||||||
sheetCF.addConditionalFormatting(regions, rule1);
|
sheetCF.addConditionalFormatting(regions, rule1);
|
||||||
|
|
||||||
regions = new CellRangeAddress[] { CellRangeAddress.valueOf("B3:J3") };
|
regions = new CellRangeAddress[] { CellRangeAddress.valueOf("B3:J3") };
|
||||||
ConditionalFormattingRule rule2 =
|
ConditionalFormattingRule rule2 =
|
||||||
sheetCF.createConditionalFormattingColorScaleRule();
|
sheetCF.createConditionalFormattingColorScaleRule();
|
||||||
@ -574,7 +574,7 @@ public class ConditionalFormats {
|
|||||||
((ExtendedColor)cs2.getColors()[1]).setARGBHex("FFFCFCFF");
|
((ExtendedColor)cs2.getColors()[1]).setARGBHex("FFFCFCFF");
|
||||||
((ExtendedColor)cs2.getColors()[2]).setARGBHex("FF5A8AC6");
|
((ExtendedColor)cs2.getColors()[2]).setARGBHex("FF5A8AC6");
|
||||||
sheetCF.addConditionalFormatting(regions, rule2);
|
sheetCF.addConditionalFormatting(regions, rule2);
|
||||||
|
|
||||||
regions = new CellRangeAddress[] { CellRangeAddress.valueOf("B4:Q4") };
|
regions = new CellRangeAddress[] { CellRangeAddress.valueOf("B4:Q4") };
|
||||||
ConditionalFormattingRule rule3=
|
ConditionalFormattingRule rule3=
|
||||||
sheetCF.createConditionalFormattingColorScaleRule();
|
sheetCF.createConditionalFormattingColorScaleRule();
|
||||||
@ -586,7 +586,7 @@ public class ConditionalFormats {
|
|||||||
((ExtendedColor)cs3.getColors()[1]).setARGBHex("FF63BE7B");
|
((ExtendedColor)cs3.getColors()[1]).setARGBHex("FF63BE7B");
|
||||||
sheetCF.addConditionalFormatting(regions, rule3);
|
sheetCF.addConditionalFormatting(regions, rule3);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DataBars / Data-Bars allow you to have bars shown vary
|
* DataBars / Data-Bars allow you to have bars shown vary
|
||||||
* based on the values, from full to empty
|
* based on the values, from full to empty
|
||||||
@ -623,7 +623,7 @@ public class ConditionalFormats {
|
|||||||
sheet.setColumnWidth(3, 5000);
|
sheet.setColumnWidth(3, 5000);
|
||||||
|
|
||||||
SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
|
SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
|
||||||
|
|
||||||
ExtendedColor color = sheet.getWorkbook().getCreationHelper().createExtendedColor();
|
ExtendedColor color = sheet.getWorkbook().getCreationHelper().createExtendedColor();
|
||||||
color.setARGBHex("FF63BE7B");
|
color.setARGBHex("FF63BE7B");
|
||||||
CellRangeAddress[] regions = { CellRangeAddress.valueOf("B2:B7") };
|
CellRangeAddress[] regions = { CellRangeAddress.valueOf("B2:B7") };
|
||||||
@ -632,7 +632,7 @@ public class ConditionalFormats {
|
|||||||
db1.getMinThreshold().setRangeType(RangeType.MIN);
|
db1.getMinThreshold().setRangeType(RangeType.MIN);
|
||||||
db1.getMaxThreshold().setRangeType(RangeType.MAX);
|
db1.getMaxThreshold().setRangeType(RangeType.MAX);
|
||||||
sheetCF.addConditionalFormatting(regions, rule1);
|
sheetCF.addConditionalFormatting(regions, rule1);
|
||||||
|
|
||||||
color = sheet.getWorkbook().getCreationHelper().createExtendedColor();
|
color = sheet.getWorkbook().getCreationHelper().createExtendedColor();
|
||||||
color.setARGBHex("FF5A8AC6");
|
color.setARGBHex("FF5A8AC6");
|
||||||
regions = new CellRangeAddress[] { CellRangeAddress.valueOf("C2:C7") };
|
regions = new CellRangeAddress[] { CellRangeAddress.valueOf("C2:C7") };
|
||||||
@ -641,7 +641,7 @@ public class ConditionalFormats {
|
|||||||
db2.getMinThreshold().setRangeType(RangeType.MIN);
|
db2.getMinThreshold().setRangeType(RangeType.MIN);
|
||||||
db2.getMaxThreshold().setRangeType(RangeType.MAX);
|
db2.getMaxThreshold().setRangeType(RangeType.MAX);
|
||||||
sheetCF.addConditionalFormatting(regions, rule2);
|
sheetCF.addConditionalFormatting(regions, rule2);
|
||||||
|
|
||||||
color = sheet.getWorkbook().getCreationHelper().createExtendedColor();
|
color = sheet.getWorkbook().getCreationHelper().createExtendedColor();
|
||||||
color.setARGBHex("FFF8696B");
|
color.setARGBHex("FFF8696B");
|
||||||
regions = new CellRangeAddress[] { CellRangeAddress.valueOf("D2:D7") };
|
regions = new CellRangeAddress[] { CellRangeAddress.valueOf("D2:D7") };
|
||||||
@ -651,7 +651,7 @@ public class ConditionalFormats {
|
|||||||
db3.getMaxThreshold().setRangeType(RangeType.MAX);
|
db3.getMaxThreshold().setRangeType(RangeType.MAX);
|
||||||
sheetCF.addConditionalFormatting(regions, rule3);
|
sheetCF.addConditionalFormatting(regions, rule3);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Print out a summary of the conditional formatting rules applied to cells on the given sheet.
|
* Print out a summary of the conditional formatting rules applied to cells on the given sheet.
|
||||||
* Only cells with a matching rule are printed, and for those, all matching rules are sumarized.
|
* Only cells with a matching rule are printed, and for those, all matching rules are sumarized.
|
||||||
@ -661,15 +661,19 @@ public class ConditionalFormats {
|
|||||||
final ConditionalFormattingEvaluator cfEval = new ConditionalFormattingEvaluator(wb, wbEvalProv);
|
final ConditionalFormattingEvaluator cfEval = new ConditionalFormattingEvaluator(wb, wbEvalProv);
|
||||||
// if cell values have changed, clear cached format results
|
// if cell values have changed, clear cached format results
|
||||||
cfEval.clearAllCachedValues();
|
cfEval.clearAllCachedValues();
|
||||||
|
|
||||||
final Sheet sheet = wb.getSheet(sheetName);
|
final Sheet sheet = wb.getSheet(sheetName);
|
||||||
for (Row r : sheet) {
|
for (Row r : sheet) {
|
||||||
for (Cell c : r) {
|
for (Cell c : r) {
|
||||||
final List<EvaluationConditionalFormatRule> rules = cfEval.getConditionalFormattingForCell(c);
|
final List<EvaluationConditionalFormatRule> rules = cfEval.getConditionalFormattingForCell(c);
|
||||||
// check rules list for null, although current implementation will return an empty list, not null, then do what you want with results
|
// check rules list for null, although current implementation will return an empty list, not null, then do what you want with results
|
||||||
if (rules == null || rules.isEmpty()) continue;
|
if (rules == null || rules.isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
final CellReference ref = ConditionalFormattingEvaluator.getRef(c);
|
final CellReference ref = ConditionalFormattingEvaluator.getRef(c);
|
||||||
if (rules.isEmpty()) continue;
|
if (rules.isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
System.out.println("\n"
|
System.out.println("\n"
|
||||||
+ ref.formatAsString()
|
+ ref.formatAsString()
|
||||||
@ -682,7 +686,7 @@ public class ConditionalFormats {
|
|||||||
b.append("\tRule ")
|
b.append("\tRule ")
|
||||||
.append(rule.getFormattingIndex())
|
.append(rule.getFormattingIndex())
|
||||||
.append(": ");
|
.append(": ");
|
||||||
|
|
||||||
// check for color scale
|
// check for color scale
|
||||||
if (cf.getColorScaleFormatting() != null) {
|
if (cf.getColorScaleFormatting() != null) {
|
||||||
b.append("\n\t\tcolor scale (caller must calculate bucket)");
|
b.append("\n\t\tcolor scale (caller must calculate bucket)");
|
||||||
@ -709,13 +713,19 @@ public class ConditionalFormats {
|
|||||||
b.append("\n\t\tfont format ")
|
b.append("\n\t\tfont format ")
|
||||||
.append("color index ")
|
.append("color index ")
|
||||||
.append(ff.getFontColorIndex());
|
.append(ff.getFontColorIndex());
|
||||||
if (ff.isBold()) b.append(" bold");
|
if (ff.isBold()) {
|
||||||
if (ff.isItalic()) b.append(" italic");
|
b.append(" bold");
|
||||||
if (ff.isStruckout()) b.append(" strikeout");
|
}
|
||||||
|
if (ff.isItalic()) {
|
||||||
|
b.append(" italic");
|
||||||
|
}
|
||||||
|
if (ff.isStruckout()) {
|
||||||
|
b.append(" strikeout");
|
||||||
|
}
|
||||||
b.append(" underline index ")
|
b.append(" underline index ")
|
||||||
.append(ff.getUnderlineType());
|
.append(ff.getUnderlineType());
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.println(b);
|
System.out.println(b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,6 @@ import java.util.Set;
|
|||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||||
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
|
||||||
import org.apache.poi.ss.format.CellFormat;
|
import org.apache.poi.ss.format.CellFormat;
|
||||||
import org.apache.poi.ss.format.CellFormatResult;
|
import org.apache.poi.ss.format.CellFormatResult;
|
||||||
import org.apache.poi.ss.usermodel.BorderStyle;
|
import org.apache.poi.ss.usermodel.BorderStyle;
|
||||||
@ -96,10 +95,10 @@ public class ToHtml {
|
|||||||
BorderStyle.SLANTED_DASH_DOT, "dashed 2pt",
|
BorderStyle.SLANTED_DASH_DOT, "dashed 2pt",
|
||||||
BorderStyle.THICK, "solid 3pt",
|
BorderStyle.THICK, "solid 3pt",
|
||||||
BorderStyle.THIN, "dashed 1pt");
|
BorderStyle.THIN, "dashed 1pt");
|
||||||
|
|
||||||
private static final int IDX_TABLE_WIDTH = -2;
|
private static final int IDX_TABLE_WIDTH = -2;
|
||||||
private static final int IDX_HEADER_COL_WIDTH = -1;
|
private static final int IDX_HEADER_COL_WIDTH = -1;
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings({"unchecked"})
|
@SuppressWarnings({"unchecked"})
|
||||||
private static <K, V> Map<K, V> mapFor(Object... mapping) {
|
private static <K, V> Map<K, V> mapFor(Object... mapping) {
|
||||||
@ -189,9 +188,14 @@ public class ToHtml {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ToHtml toHtml = create(args[0], new PrintWriter(new FileWriter(args[1])));
|
try (
|
||||||
toHtml.setCompleteHTML(true);
|
FileWriter fw = new FileWriter(args[1]);
|
||||||
toHtml.printPage();
|
PrintWriter pw = new PrintWriter(fw)
|
||||||
|
) {
|
||||||
|
ToHtml toHtml = create(args[0], pw);
|
||||||
|
toHtml.setCompleteHTML(true);
|
||||||
|
toHtml.printPage();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCompleteHTML(boolean completeHTML) {
|
public void setCompleteHTML(boolean completeHTML) {
|
||||||
@ -350,32 +354,32 @@ public class ToHtml {
|
|||||||
public void printSheet(Sheet sheet) {
|
public void printSheet(Sheet sheet) {
|
||||||
ensureOut();
|
ensureOut();
|
||||||
Map<Integer, Integer> widths = computeWidths(sheet);
|
Map<Integer, Integer> widths = computeWidths(sheet);
|
||||||
int tableWidth = widths.get(IDX_TABLE_WIDTH);
|
int tableWidth = widths.get(IDX_TABLE_WIDTH);
|
||||||
out.format("<table class=%s style=\"width:%dpx;\">%n", DEFAULTS_CLASS, tableWidth);
|
out.format("<table class=%s style=\"width:%dpx;\">%n", DEFAULTS_CLASS, tableWidth);
|
||||||
printCols(widths);
|
printCols(widths);
|
||||||
printSheetContent(sheet);
|
printSheetContent(sheet);
|
||||||
out.format("</table>%n");
|
out.format("</table>%n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* computes the column widths, defined by the sheet.
|
* computes the column widths, defined by the sheet.
|
||||||
*
|
*
|
||||||
* @param sheet The sheet for which to compute widths
|
* @param sheet The sheet for which to compute widths
|
||||||
* @return Map with key: column index; value: column width in pixels
|
* @return Map with key: column index; value: column width in pixels
|
||||||
* <br>special keys:
|
* <br>special keys:
|
||||||
* <br>{@link #IDX_HEADER_COL_WIDTH} - width of the header column
|
* <br>{@link #IDX_HEADER_COL_WIDTH} - width of the header column
|
||||||
* <br>{@link #IDX_TABLE_WIDTH} - width of the entire table
|
* <br>{@link #IDX_TABLE_WIDTH} - width of the entire table
|
||||||
*/
|
*/
|
||||||
private Map<Integer, Integer> computeWidths(Sheet sheet) {
|
private Map<Integer, Integer> computeWidths(Sheet sheet) {
|
||||||
Map<Integer, Integer> ret = new TreeMap<>();
|
Map<Integer, Integer> ret = new TreeMap<>();
|
||||||
int tableWidth = 0;
|
int tableWidth = 0;
|
||||||
|
|
||||||
ensureColumnBounds(sheet);
|
ensureColumnBounds(sheet);
|
||||||
|
|
||||||
// compute width of the header column
|
// compute width of the header column
|
||||||
int lastRowNum = sheet.getLastRowNum();
|
int lastRowNum = sheet.getLastRowNum();
|
||||||
int headerCharCount = String.valueOf(lastRowNum).length();
|
int headerCharCount = String.valueOf(lastRowNum).length();
|
||||||
int headerColWidth = widthToPixels((headerCharCount + 1) * 256);
|
int headerColWidth = widthToPixels((headerCharCount + 1) * 256.0);
|
||||||
ret.put(IDX_HEADER_COL_WIDTH, headerColWidth);
|
ret.put(IDX_HEADER_COL_WIDTH, headerColWidth);
|
||||||
tableWidth += headerColWidth;
|
tableWidth += headerColWidth;
|
||||||
|
|
||||||
@ -384,11 +388,11 @@ public class ToHtml {
|
|||||||
ret.put(i, colWidth);
|
ret.put(i, colWidth);
|
||||||
tableWidth += colWidth;
|
tableWidth += colWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret.put(IDX_TABLE_WIDTH, tableWidth);
|
ret.put(IDX_TABLE_WIDTH, tableWidth);
|
||||||
return ret ;
|
return ret ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Probably platform-specific, but appears to be a close approximation on some systems
|
* Probably platform-specific, but appears to be a close approximation on some systems
|
||||||
* @param widthUnits POI's native width unit (twips)
|
* @param widthUnits POI's native width unit (twips)
|
||||||
|
@ -63,7 +63,7 @@ public class BarChart {
|
|||||||
row = sheet.createRow((short) rowIndex);
|
row = sheet.createRow((short) rowIndex);
|
||||||
for (int colIndex = 0; colIndex < NUM_OF_COLUMNS; colIndex++) {
|
for (int colIndex = 0; colIndex < NUM_OF_COLUMNS; colIndex++) {
|
||||||
cell = row.createCell((short) colIndex);
|
cell = row.createCell((short) colIndex);
|
||||||
cell.setCellValue(colIndex * (rowIndex + 1));
|
cell.setCellValue(colIndex * (rowIndex + 1.0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,18 +58,18 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|||||||
* <p>
|
* <p>
|
||||||
* If you really want to use this approach, which is also the one that SXSSF
|
* If you really want to use this approach, which is also the one that SXSSF
|
||||||
* does for you, it works as follows:
|
* does for you, it works as follows:
|
||||||
*
|
*
|
||||||
* 1. create a template workbook, create sheets and global objects such as cell styles, number formats, etc.
|
* 1. create a template workbook, create sheets and global objects such as cell styles, number formats, etc.
|
||||||
* 2. create an application that streams data in a text file
|
* 2. create an application that streams data in a text file
|
||||||
* 3. Substitute the sheet in the template with the generated data
|
* 3. Substitute the sheet in the template with the generated data
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
* Since 3.8 POI provides a low-memory footprint SXSSF API, which implements
|
* Since 3.8 POI provides a low-memory footprint SXSSF API, which implements
|
||||||
* ths "BigGridDemo" strategy. SXSSF is an API-compatible streaming extension
|
* ths "BigGridDemo" strategy. SXSSF is an API-compatible streaming extension
|
||||||
* of XSSF to be used when very large spreadsheets have to be produced, and
|
* of XSSF to be used when very large spreadsheets have to be produced, and
|
||||||
* heap space is limited. SXSSF achieves its low memory footprint by limiting
|
* heap space is limited. SXSSF achieves its low memory footprint by limiting
|
||||||
* access to the rows that are within a sliding window, while XSSF gives access
|
* access to the rows that are within a sliding window, while XSSF gives access
|
||||||
* to all rows in the document. Older rows that are no longer in the window
|
* to all rows in the document. Older rows that are no longer in the window
|
||||||
* become inaccessible, as they are written to the disk.
|
* become inaccessible, as they are written to the disk.
|
||||||
* </p>
|
* </p>
|
||||||
* See <a "http://poi.apache.org/spreadsheet/how-to.html#sxssf">
|
* See <a "http://poi.apache.org/spreadsheet/how-to.html#sxssf">
|
||||||
@ -79,7 +79,7 @@ public final class BigGridDemo {
|
|||||||
private static final String XML_ENCODING = "UTF-8";
|
private static final String XML_ENCODING = "UTF-8";
|
||||||
|
|
||||||
private BigGridDemo() {}
|
private BigGridDemo() {}
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
|
|
||||||
// Step 1. Create a template file. Setup sheets and workbook-level objects such as
|
// Step 1. Create a template file. Setup sheets and workbook-level objects such as
|
||||||
@ -99,7 +99,10 @@ public final class BigGridDemo {
|
|||||||
|
|
||||||
//Step 2. Generate XML file.
|
//Step 2. Generate XML file.
|
||||||
File tmp = File.createTempFile("sheet", ".xml");
|
File tmp = File.createTempFile("sheet", ".xml");
|
||||||
try (Writer fw = new OutputStreamWriter(new FileOutputStream(tmp), XML_ENCODING)) {
|
try (
|
||||||
|
FileOutputStream stream = new FileOutputStream(tmp);
|
||||||
|
Writer fw = new OutputStreamWriter(stream, XML_ENCODING)
|
||||||
|
) {
|
||||||
generate(fw, styles);
|
generate(fw, styles);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -265,7 +268,9 @@ public final class BigGridDemo {
|
|||||||
public void createCell(int columnIndex, String value, int styleIndex) throws IOException {
|
public void createCell(int columnIndex, String value, int styleIndex) throws IOException {
|
||||||
String ref = new CellReference(_rownum, columnIndex).formatAsString();
|
String ref = new CellReference(_rownum, columnIndex).formatAsString();
|
||||||
_out.write("<c r=\""+ref+"\" t=\"inlineStr\"");
|
_out.write("<c r=\""+ref+"\" t=\"inlineStr\"");
|
||||||
if(styleIndex != -1) _out.write(" s=\""+styleIndex+"\"");
|
if(styleIndex != -1) {
|
||||||
|
_out.write(" s=\""+styleIndex+"\"");
|
||||||
|
}
|
||||||
_out.write(">");
|
_out.write(">");
|
||||||
_out.write("<is><t>"+value+"</t></is>");
|
_out.write("<is><t>"+value+"</t></is>");
|
||||||
_out.write("</c>");
|
_out.write("</c>");
|
||||||
@ -278,7 +283,9 @@ public final class BigGridDemo {
|
|||||||
public void createCell(int columnIndex, double value, int styleIndex) throws IOException {
|
public void createCell(int columnIndex, double value, int styleIndex) throws IOException {
|
||||||
String ref = new CellReference(_rownum, columnIndex).formatAsString();
|
String ref = new CellReference(_rownum, columnIndex).formatAsString();
|
||||||
_out.write("<c r=\""+ref+"\" t=\"n\"");
|
_out.write("<c r=\""+ref+"\" t=\"n\"");
|
||||||
if(styleIndex != -1) _out.write(" s=\""+styleIndex+"\"");
|
if(styleIndex != -1) {
|
||||||
|
_out.write(" s=\""+styleIndex+"\"");
|
||||||
|
}
|
||||||
_out.write(">");
|
_out.write(">");
|
||||||
_out.write("<v>"+value+"</v>");
|
_out.write("<v>"+value+"</v>");
|
||||||
_out.write("</c>");
|
_out.write("</c>");
|
||||||
|
@ -33,14 +33,18 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|||||||
* Demonstrates how to create a simple table using Apache POI.
|
* Demonstrates how to create a simple table using Apache POI.
|
||||||
*/
|
*/
|
||||||
public class CreateTable {
|
public class CreateTable {
|
||||||
|
|
||||||
public static void main(String[] args) throws IOException {
|
public static void main(String[] args) throws IOException {
|
||||||
|
|
||||||
try (Workbook wb = new XSSFWorkbook()) {
|
try (Workbook wb = new XSSFWorkbook()) {
|
||||||
XSSFSheet sheet = (XSSFSheet) wb.createSheet();
|
XSSFSheet sheet = (XSSFSheet) wb.createSheet();
|
||||||
|
|
||||||
|
// Set which area the table should be placed in
|
||||||
|
AreaReference reference = wb.getCreationHelper().createAreaReference(
|
||||||
|
new CellReference(0, 0), new CellReference(2, 2));
|
||||||
|
|
||||||
// Create
|
// Create
|
||||||
XSSFTable table = sheet.createTable();
|
XSSFTable table = sheet.createTable(reference);
|
||||||
table.setName("Test");
|
table.setName("Test");
|
||||||
table.setDisplayName("Test_Table");
|
table.setDisplayName("Test_Table");
|
||||||
|
|
||||||
@ -70,7 +74,7 @@ public class CreateTable {
|
|||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
cell.setCellValue("Column" + (j + 1));
|
cell.setCellValue("Column" + (j + 1));
|
||||||
} else {
|
} else {
|
||||||
cell.setCellValue((i + 1) * (j + 1));
|
cell.setCellValue((i + 1.0) * (j + 1.0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -79,11 +83,6 @@ public class CreateTable {
|
|||||||
table.createColumn("Column 2");
|
table.createColumn("Column 2");
|
||||||
table.createColumn("Column 3");
|
table.createColumn("Column 3");
|
||||||
|
|
||||||
// Set which area the table should be placed in
|
|
||||||
AreaReference reference = wb.getCreationHelper().createAreaReference(
|
|
||||||
new CellReference(0, 0), new CellReference(2, 2));
|
|
||||||
table.setCellReferences(reference);
|
|
||||||
|
|
||||||
// Save
|
// Save
|
||||||
try (FileOutputStream fileOut = new FileOutputStream("ooxml-table.xlsx")) {
|
try (FileOutputStream fileOut = new FileOutputStream("ooxml-table.xlsx")) {
|
||||||
wb.write(fileOut);
|
wb.write(fileOut);
|
||||||
|
@ -32,7 +32,10 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|||||||
public class IterateCells {
|
public class IterateCells {
|
||||||
|
|
||||||
public static void main(String[] args) throws IOException {
|
public static void main(String[] args) throws IOException {
|
||||||
try (Workbook wb = new XSSFWorkbook(new FileInputStream(args[0]))) {
|
try (
|
||||||
|
FileInputStream is = new FileInputStream(args[0]);
|
||||||
|
Workbook wb = new XSSFWorkbook(is)
|
||||||
|
) {
|
||||||
for (int i = 0; i < wb.getNumberOfSheets(); i++) {
|
for (int i = 0; i < wb.getNumberOfSheets(); i++) {
|
||||||
Sheet sheet = wb.getSheetAt(i);
|
Sheet sheet = wb.getSheetAt(i);
|
||||||
System.out.println(wb.getSheetName(i));
|
System.out.println(wb.getSheetName(i));
|
||||||
|
@ -57,26 +57,26 @@ public class LineChart {
|
|||||||
row = sheet.createRow((short) rowIndex);
|
row = sheet.createRow((short) rowIndex);
|
||||||
for (int colIndex = 0; colIndex < NUM_OF_COLUMNS; colIndex++) {
|
for (int colIndex = 0; colIndex < NUM_OF_COLUMNS; colIndex++) {
|
||||||
cell = row.createCell((short) colIndex);
|
cell = row.createCell((short) colIndex);
|
||||||
cell.setCellValue(colIndex * (rowIndex + 1));
|
cell.setCellValue(colIndex * (rowIndex + 1.0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
XSSFDrawing drawing = sheet.createDrawingPatriarch();
|
XSSFDrawing drawing = sheet.createDrawingPatriarch();
|
||||||
XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 5, 10, 15);
|
XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 5, 10, 15);
|
||||||
|
|
||||||
XSSFChart chart = drawing.createChart(anchor);
|
XSSFChart chart = drawing.createChart(anchor);
|
||||||
XDDFChartLegend legend = chart.getOrAddLegend();
|
XDDFChartLegend legend = chart.getOrAddLegend();
|
||||||
legend.setPosition(LegendPosition.TOP_RIGHT);
|
legend.setPosition(LegendPosition.TOP_RIGHT);
|
||||||
|
|
||||||
// Use a category axis for the bottom axis.
|
// Use a category axis for the bottom axis.
|
||||||
XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);
|
XDDFCategoryAxis bottomAxis = chart.createCategoryAxis(AxisPosition.BOTTOM);
|
||||||
XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
|
XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
|
||||||
leftAxis.setCrosses(AxisCrosses.AUTO_ZERO);
|
leftAxis.setCrosses(AxisCrosses.AUTO_ZERO);
|
||||||
|
|
||||||
XDDFDataSource<Double> xs = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(0, 0, 0, NUM_OF_COLUMNS - 1));
|
XDDFDataSource<Double> xs = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(0, 0, 0, NUM_OF_COLUMNS - 1));
|
||||||
XDDFNumericalDataSource<Double> ys1 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(1, 1, 0, NUM_OF_COLUMNS - 1));
|
XDDFNumericalDataSource<Double> ys1 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(1, 1, 0, NUM_OF_COLUMNS - 1));
|
||||||
XDDFNumericalDataSource<Double> ys2 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(2, 2, 0, NUM_OF_COLUMNS - 1));
|
XDDFNumericalDataSource<Double> ys2 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(2, 2, 0, NUM_OF_COLUMNS - 1));
|
||||||
|
|
||||||
XDDFChartData data = chart.createData(ChartTypes.LINE, bottomAxis, leftAxis);
|
XDDFChartData data = chart.createData(ChartTypes.LINE, bottomAxis, leftAxis);
|
||||||
data.addSeries(xs, ys1);
|
data.addSeries(xs, ys1);
|
||||||
data.addSeries(xs, ys2);
|
data.addSeries(xs, ys2);
|
||||||
|
@ -59,28 +59,28 @@ public class ScatterChart {
|
|||||||
row = sheet.createRow((short) rowIndex);
|
row = sheet.createRow((short) rowIndex);
|
||||||
for (int colIndex = 0; colIndex < NUM_OF_COLUMNS; colIndex++) {
|
for (int colIndex = 0; colIndex < NUM_OF_COLUMNS; colIndex++) {
|
||||||
cell = row.createCell((short) colIndex);
|
cell = row.createCell((short) colIndex);
|
||||||
cell.setCellValue(colIndex * (rowIndex + 1));
|
cell.setCellValue(colIndex * (rowIndex + 1.0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
XSSFDrawing drawing = sheet.createDrawingPatriarch();
|
XSSFDrawing drawing = sheet.createDrawingPatriarch();
|
||||||
XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 5, 10, 15);
|
XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 0, 5, 10, 15);
|
||||||
|
|
||||||
XSSFChart chart = drawing.createChart(anchor);
|
XSSFChart chart = drawing.createChart(anchor);
|
||||||
XDDFChartLegend legend = chart.getOrAddLegend();
|
XDDFChartLegend legend = chart.getOrAddLegend();
|
||||||
legend.setPosition(LegendPosition.TOP_RIGHT);
|
legend.setPosition(LegendPosition.TOP_RIGHT);
|
||||||
|
|
||||||
XDDFValueAxis bottomAxis = chart.createValueAxis(AxisPosition.BOTTOM);
|
XDDFValueAxis bottomAxis = chart.createValueAxis(AxisPosition.BOTTOM);
|
||||||
XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
|
XDDFValueAxis leftAxis = chart.createValueAxis(AxisPosition.LEFT);
|
||||||
leftAxis.setCrosses(AxisCrosses.AUTO_ZERO);
|
leftAxis.setCrosses(AxisCrosses.AUTO_ZERO);
|
||||||
|
|
||||||
XDDFDataSource<Double> xs = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(0, 0, 0, NUM_OF_COLUMNS - 1));
|
XDDFDataSource<Double> xs = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(0, 0, 0, NUM_OF_COLUMNS - 1));
|
||||||
XDDFNumericalDataSource<Double> ys1 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(1, 1, 0, NUM_OF_COLUMNS - 1));
|
XDDFNumericalDataSource<Double> ys1 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(1, 1, 0, NUM_OF_COLUMNS - 1));
|
||||||
XDDFNumericalDataSource<Double> ys2 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(2, 2, 0, NUM_OF_COLUMNS - 1));
|
XDDFNumericalDataSource<Double> ys2 = XDDFDataSourcesFactory.fromNumericCellRange(sheet, new CellRangeAddress(2, 2, 0, NUM_OF_COLUMNS - 1));
|
||||||
|
|
||||||
|
|
||||||
XDDFChartData data = chart.createData(ChartTypes.SCATTER, bottomAxis, leftAxis);
|
XDDFChartData data = chart.createData(ChartTypes.SCATTER, bottomAxis, leftAxis);
|
||||||
|
|
||||||
data.addSeries(xs, ys1);
|
data.addSeries(xs, ys1);
|
||||||
data.addSeries(xs, ys2);
|
data.addSeries(xs, ys2);
|
||||||
chart.plot(data);
|
chart.plot(data);
|
||||||
|
@ -111,16 +111,16 @@ public class SimpleDocument {
|
|||||||
r5.setTextPosition(-10);
|
r5.setTextPosition(-10);
|
||||||
r5.setText("For in that sleep of death what dreams may come");
|
r5.setText("For in that sleep of death what dreams may come");
|
||||||
r5.addCarriageReturn();
|
r5.addCarriageReturn();
|
||||||
r5.setText("When we have shuffled off this mortal coil,"
|
r5.setText("When we have shuffled off this mortal coil, "
|
||||||
+ "Must give us pause: there's the respect"
|
+ "Must give us pause: there's the respect "
|
||||||
+ "That makes calamity of so long life;");
|
+ "That makes calamity of so long life;");
|
||||||
r5.addBreak();
|
r5.addBreak();
|
||||||
r5.setText("For who would bear the whips and scorns of time,"
|
r5.setText("For who would bear the whips and scorns of time, "
|
||||||
+ "The oppressor's wrong, the proud man's contumely,");
|
+ "The oppressor's wrong, the proud man's contumely,");
|
||||||
|
|
||||||
r5.addBreak(BreakClear.ALL);
|
r5.addBreak(BreakClear.ALL);
|
||||||
r5.setText("The pangs of despised love, the law's delay,"
|
r5.setText("The pangs of despised love, the law's delay, "
|
||||||
+ "The insolence of office and the spurns" + ".......");
|
+ "The insolence of office and the spurns " + ".......");
|
||||||
|
|
||||||
try (FileOutputStream out = new FileOutputStream("simple.docx")) {
|
try (FileOutputStream out = new FileOutputStream("simple.docx")) {
|
||||||
doc.write(out);
|
doc.write(out);
|
||||||
|
@ -43,18 +43,29 @@ public class SimpleImages {
|
|||||||
for (String imgFile : args) {
|
for (String imgFile : args) {
|
||||||
int format;
|
int format;
|
||||||
|
|
||||||
if (imgFile.endsWith(".emf")) format = XWPFDocument.PICTURE_TYPE_EMF;
|
if (imgFile.endsWith(".emf")) {
|
||||||
else if (imgFile.endsWith(".wmf")) format = XWPFDocument.PICTURE_TYPE_WMF;
|
format = XWPFDocument.PICTURE_TYPE_EMF;
|
||||||
else if (imgFile.endsWith(".pict")) format = XWPFDocument.PICTURE_TYPE_PICT;
|
} else if (imgFile.endsWith(".wmf")) {
|
||||||
else if (imgFile.endsWith(".jpeg") || imgFile.endsWith(".jpg")) format = XWPFDocument.PICTURE_TYPE_JPEG;
|
format = XWPFDocument.PICTURE_TYPE_WMF;
|
||||||
else if (imgFile.endsWith(".png")) format = XWPFDocument.PICTURE_TYPE_PNG;
|
} else if (imgFile.endsWith(".pict")) {
|
||||||
else if (imgFile.endsWith(".dib")) format = XWPFDocument.PICTURE_TYPE_DIB;
|
format = XWPFDocument.PICTURE_TYPE_PICT;
|
||||||
else if (imgFile.endsWith(".gif")) format = XWPFDocument.PICTURE_TYPE_GIF;
|
} else if (imgFile.endsWith(".jpeg") || imgFile.endsWith(".jpg")) {
|
||||||
else if (imgFile.endsWith(".tiff")) format = XWPFDocument.PICTURE_TYPE_TIFF;
|
format = XWPFDocument.PICTURE_TYPE_JPEG;
|
||||||
else if (imgFile.endsWith(".eps")) format = XWPFDocument.PICTURE_TYPE_EPS;
|
} else if (imgFile.endsWith(".png")) {
|
||||||
else if (imgFile.endsWith(".bmp")) format = XWPFDocument.PICTURE_TYPE_BMP;
|
format = XWPFDocument.PICTURE_TYPE_PNG;
|
||||||
else if (imgFile.endsWith(".wpg")) format = XWPFDocument.PICTURE_TYPE_WPG;
|
} else if (imgFile.endsWith(".dib")) {
|
||||||
else {
|
format = XWPFDocument.PICTURE_TYPE_DIB;
|
||||||
|
} else if (imgFile.endsWith(".gif")) {
|
||||||
|
format = XWPFDocument.PICTURE_TYPE_GIF;
|
||||||
|
} else if (imgFile.endsWith(".tiff")) {
|
||||||
|
format = XWPFDocument.PICTURE_TYPE_TIFF;
|
||||||
|
} else if (imgFile.endsWith(".eps")) {
|
||||||
|
format = XWPFDocument.PICTURE_TYPE_EPS;
|
||||||
|
} else if (imgFile.endsWith(".bmp")) {
|
||||||
|
format = XWPFDocument.PICTURE_TYPE_BMP;
|
||||||
|
} else if (imgFile.endsWith(".wpg")) {
|
||||||
|
format = XWPFDocument.PICTURE_TYPE_WPG;
|
||||||
|
} else {
|
||||||
System.err.println("Unsupported picture: " + imgFile +
|
System.err.println("Unsupported picture: " + imgFile +
|
||||||
". Expected emf|wmf|pict|jpeg|png|dib|gif|tiff|eps|bmp|wpg");
|
". Expected emf|wmf|pict|jpeg|png|dib|gif|tiff|eps|bmp|wpg");
|
||||||
continue;
|
continue;
|
||||||
@ -62,7 +73,9 @@ public class SimpleImages {
|
|||||||
|
|
||||||
r.setText(imgFile);
|
r.setText(imgFile);
|
||||||
r.addBreak();
|
r.addBreak();
|
||||||
r.addPicture(new FileInputStream(imgFile), format, imgFile, Units.toEMU(200), Units.toEMU(200)); // 200x200 pixels
|
try (FileInputStream is = new FileInputStream(imgFile)) {
|
||||||
|
r.addPicture(is, format, imgFile, Units.toEMU(200), Units.toEMU(200)); // 200x200 pixels
|
||||||
|
}
|
||||||
r.addBreak(BreakType.PAGE);
|
r.addBreak(BreakType.PAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user