:poi-scratchpad - fix javadocs - link to dependent/external project javadocs

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1888746 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Andreas Beeker 2021-04-13 21:37:33 +00:00
parent 240b02daec
commit 088d1dd197
20 changed files with 1097 additions and 1264 deletions

View File

@ -31,6 +31,7 @@ final String VERSIONS9 = 'META-INF/versions/9'
configurations {
tests
javadocs
}
sourceSets {
@ -56,6 +57,9 @@ dependencies {
testImplementation project(path: ':poi', configuration: 'tests')
testImplementation "org.junit.jupiter:junit-jupiter-api:${junitVersion}"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:${junitVersion}"
javadocs project(':poi')
javadocs project(':poi-ooxml')
}
final MODULE_NAME = 'org.apache.poi.scratchpad'
@ -202,11 +206,20 @@ test {
}
javadoc {
// fails currently, need to fix the sources
failOnError = false
// if(JavaVersion.current().isJava9Compatible()) {
// options.addBooleanOption('html5', true)
// }
failOnError = true
doFirst {
options {
if (JavaVersion.current().isJava9Compatible()) {
addBooleanOption('html5', true)
}
links 'https://poi.apache.org/apidocs/dev/'
links 'https://docs.oracle.com/javase/8/docs/api/'
use = true
splitIndex = true
source = "1.8"
classpath += configurations.javadocs.files
}
}
}
publishing {

View File

@ -99,7 +99,7 @@ public final class HPBFDumper {
/**
* Dump out the escher parts of the file.
* Escher -> EscherStm and EscherDelayStm
* Escher -> EscherStm and EscherDelayStm
*/
public void dumpEscher() throws IOException {
DirectoryNode escherDir = (DirectoryNode)

View File

@ -97,7 +97,7 @@ public final class AnimationInfoAtom extends RecordAtom {
/**
* Record header.
*/
private byte[] _header;
private final byte[] _header;
/**
* record data
@ -246,7 +246,7 @@ public final class AnimationInfoAtom extends RecordAtom {
* A signed integer that specifies the order of the animation in the slide.
* It MUST be greater than or equal to -2. The value -2 specifies that this animation follows the order of
* the corresponding placeholder shape on the main master slide or title master slide.
* The value -1 SHOULD NOT <105> be used.
* The value -1 SHOULD NOT be used.
*/
public int getOrderID(){
return LittleEndian.getInt(_recdata, 16);
@ -256,7 +256,7 @@ public final class AnimationInfoAtom extends RecordAtom {
* A signed integer that specifies the order of the animation in the slide.
* It MUST be greater than or equal to -2. The value -2 specifies that this animation follows the order of
* the corresponding placeholder shape on the main master slide or title master slide.
* The value -1 SHOULD NOT <105> be used.
* The value -1 SHOULD NOT be used.
*/
public void setOrderID(int id){
LittleEndian.putInt(_recdata, 16, id);

View File

@ -24,8 +24,10 @@ import java.util.Map;
* List of all known record types in a PowerPoint document, and the
* classes that handle them.
* There are two categories of records:
* <li> PowerPoint records: 0 <= info <= 10002 (will carry class info)
* <li> Escher records: info >= 0xF000 (handled by DDF, so no class info)
* <ul>
* <li> PowerPoint records: {@code 0 <= info <= 10002} (will carry class info)
* <li> Escher records: {@code info >= 0xF000} (handled by DDF, so no class info)
* </ul>
*/
public enum RecordTypes {
Unknown(0,null),
@ -186,9 +188,9 @@ public enum RecordTypes {
}
public final short typeID;
public final RecordConstructor recordConstructor;
public final RecordConstructor<?> recordConstructor;
RecordTypes(int typeID, RecordConstructor recordConstructor) {
RecordTypes(int typeID, RecordConstructor<?> recordConstructor) {
this.typeID = (short)typeID;
this.recordConstructor = recordConstructor;
}

View File

@ -101,8 +101,8 @@ public class OutlookTextExtractor implements POIOLE2TextExtractor {
}
try {
s.append("From: " + msg.getDisplayFrom() + "\n");
} catch (ChunkNotFoundException e) {
s.append("From: ").append(msg.getDisplayFrom()).append("\n");
} catch (ChunkNotFoundException ignored) {
}
// For To, CC and BCC, try to match the names
@ -111,15 +111,15 @@ public class OutlookTextExtractor implements POIOLE2TextExtractor {
// people in To + CC + BCC.
try {
handleEmails(s, "To", msg.getDisplayTo(), emails);
} catch (ChunkNotFoundException e) {
} catch (ChunkNotFoundException ignored) {
}
try {
handleEmails(s, "CC", msg.getDisplayCC(), emails);
} catch (ChunkNotFoundException e) {
} catch (ChunkNotFoundException ignored) {
}
try {
handleEmails(s, "BCC", msg.getDisplayBCC(), emails);
} catch (ChunkNotFoundException e) {
} catch (ChunkNotFoundException ignored) {
}
// Date - try two ways to find it
@ -145,7 +145,7 @@ public class OutlookTextExtractor implements POIOLE2TextExtractor {
try {
s.append("Subject: ").append(msg.getSubject()).append("\n");
} catch (ChunkNotFoundException e) {
} catch (ChunkNotFoundException ignored) {
}
// Display attachment names
@ -164,7 +164,7 @@ public class OutlookTextExtractor implements POIOLE2TextExtractor {
try {
s.append("\n").append(msg.getTextBody()).append("\n");
} catch (ChunkNotFoundException e) {
} catch (ChunkNotFoundException ignored) {
}
return s.toString();
@ -173,7 +173,7 @@ public class OutlookTextExtractor implements POIOLE2TextExtractor {
/**
* Takes a Display focused string, eg "Nick; Jim" and an iterator
* of emails, and does its best to return something like
* "Nick <nick@example.com>; Jim <jim@example.com>"
* {@code "Nick <nick@example.com>; Jim <jim@example.com>"}
*/
protected void handleEmails(StringBuilder s, String type, String displayText, Iterator<String> emails) {
if (displayText == null || displayText.length() == 0) {

View File

@ -19,6 +19,7 @@ package org.apache.poi.hssf.converter;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Arrays;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
@ -27,17 +28,16 @@ import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.util.Beta;
import org.apache.poi.util.Internal;
/**
* Common class for {@link ExcelToFoUtils} and {@link ExcelToHtmlUtils}
* Common class for {@link ExcelToFoConverter} and {@link ExcelToHtmlConverter}
*
* @author Sergey Vladimirov (vlsergey {at} gmail {dot} com)
* @see AbstractWordUtils
* @since POI 3.8 beta 5
*/
@Beta
public class AbstractExcelUtils {
@Internal
class AbstractExcelUtils {
/*package*/ static final String EMPTY = "";
private static final short EXCEL_COLUMN_WIDTH_FACTOR = 256;
private static final int UNIT_OFFSET_LENGTH = 7;
@ -45,14 +45,11 @@ public class AbstractExcelUtils {
public static String getAlign(HorizontalAlignment alignment) {
switch (alignment) {
case CENTER:
return "center";
case CENTER_SELECTION:
return "center";
case FILL:
// XXX: shall we support fill?
return "";
case GENERAL:
return "";
case JUSTIFY:
return "justify";
case LEFT:
@ -60,6 +57,7 @@ public class AbstractExcelUtils {
case RIGHT:
return "right";
default:
case GENERAL:
return "";
}
}
@ -115,24 +113,29 @@ public class AbstractExcelUtils {
StringBuilder stringBuilder = new StringBuilder(7);
stringBuilder.append('#');
for (short s : color.getTriplet()) {
if ( s < 10 )
if (s < 10) {
stringBuilder.append('0');
}
stringBuilder.append(Integer.toHexString(s));
}
String result = stringBuilder.toString();
if ( result.equals( "#ffffff" ) )
if (result.equals("#ffffff")) {
return "white";
}
if ( result.equals( "#c0c0c0" ) )
if (result.equals("#c0c0c0")) {
return "silver";
}
if ( result.equals( "#808080" ) )
if (result.equals("#808080")) {
return "gray";
}
if ( result.equals( "#000000" ) )
if (result.equals("#000000")) {
return "black";
}
return result;
}
@ -154,9 +157,8 @@ public class AbstractExcelUtils {
}
/**
* @param mergedRanges
* map of sheet merged ranges built with
* {@link ExcelToHtmlUtils#buildMergedRangesMap(Sheet)}
* @param mergedRanges map of sheet merged ranges built with
* {@link #buildMergedRangesMap(Sheet)}
* @return {@link CellRangeAddress} from map if cell with specified row and
* column numbers contained in found range, <tt>null</tt> otherwise
*/
@ -170,13 +172,11 @@ public class AbstractExcelUtils {
: null;
}
static boolean isEmpty( String str )
{
static boolean isEmpty(String str) {
return str == null || str.length() == 0;
}
static boolean isNotEmpty( String str )
{
static boolean isNotEmpty(String str) {
return !isEmpty(str);
}
@ -185,4 +185,53 @@ public class AbstractExcelUtils {
return new HSSFWorkbook(inputStream);
}
}
public static void appendAlign(StringBuilder style, HorizontalAlignment alignment) {
String cssAlign = getAlign(alignment);
if (isEmpty(cssAlign)) {
return;
}
style.append("text-align:");
style.append(cssAlign);
style.append(";");
}
/**
* Creates a map (i.e. two-dimensional array) filled with ranges. Allow fast
* retrieving {@link CellRangeAddress} of any cell, if cell is contained in
* range.
*
* @see #getMergedRange(CellRangeAddress[][], int, int)
*/
public static CellRangeAddress[][] buildMergedRangesMap(Sheet sheet) {
CellRangeAddress[][] mergedRanges = new CellRangeAddress[1][];
for (final CellRangeAddress cellRangeAddress : sheet.getMergedRegions()) {
final int requiredHeight = cellRangeAddress.getLastRow() + 1;
if (mergedRanges.length < requiredHeight) {
mergedRanges = Arrays.copyOf(mergedRanges, requiredHeight, CellRangeAddress[][].class);
}
for (int r = cellRangeAddress.getFirstRow(); r <= cellRangeAddress
.getLastRow(); r++) {
final int requiredWidth = cellRangeAddress.getLastColumn() + 1;
CellRangeAddress[] rowMerged = mergedRanges[r];
if (rowMerged == null) {
rowMerged = new CellRangeAddress[requiredWidth];
mergedRanges[r] = rowMerged;
} else {
final int rowMergedLength = rowMerged.length;
if (rowMergedLength < requiredWidth) {
rowMerged = mergedRanges[r] =
Arrays.copyOf(rowMerged, requiredWidth, CellRangeAddress[].class);
}
}
Arrays.fill(rowMerged, cellRangeAddress.getFirstColumn(),
cellRangeAddress.getLastColumn() + 1, cellRangeAddress);
}
}
return mergedRanges;
}
}

View File

@ -16,6 +16,16 @@
==================================================================== */
package org.apache.poi.hssf.converter;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.buildMergedRangesMap;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.getAlign;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.getBorderStyle;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.getBorderWidth;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.getColor;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.getMergedRange;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.isEmpty;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.isNotEmpty;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.loadXls;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
@ -50,12 +60,9 @@ import org.w3c.dom.Text;
/**
* Converts xls files (97-2007) to XSL FO.
*
* @author Sergey Vladimirov (vlsergey {at} gmail {dot} com)
*/
@Beta
public class ExcelToFoConverter extends AbstractExcelConverter
{
public class ExcelToFoConverter extends AbstractExcelConverter {
private static final float CM_PER_INCH = 2.54f;
private static final float DPI = 72;
@ -67,11 +74,8 @@ public class ExcelToFoConverter extends AbstractExcelConverter
private static final float PAPER_A4_WIDTH_INCHES = 21.0f / CM_PER_INCH;
/**
* Java main() interface to interact with {@link ExcelToFoConverter}
*
* <p>
* Usage: ExcelToHtmlConverter infile outfile
* </p>
* <p>
* Where infile is an input .xls file ( Word 97-2007) which will be rendered
* as XSL FO into outfile
*/
@ -97,13 +101,11 @@ public class ExcelToFoConverter extends AbstractExcelConverter
/**
* Converts Excel file (97-2007) into XSL FO file.
*
* @param xlsFile
* file to process
* @param xlsFile file to process
* @return DOM representation of result XSL FO
*/
public static Document process( File xlsFile ) throws Exception
{
try (HSSFWorkbook workbook = AbstractExcelUtils.loadXls(xlsFile)) {
public static Document process(File xlsFile) throws Exception {
try (HSSFWorkbook workbook = loadXls(xlsFile)) {
ExcelToFoConverter excelToHtmlConverter = new ExcelToFoConverter(
XMLHelper.newDocumentBuilder().newDocument());
excelToHtmlConverter.processWorkbook(workbook);
@ -115,31 +117,25 @@ public class ExcelToFoConverter extends AbstractExcelConverter
private float pageMarginInches = 0.4f;
public ExcelToFoConverter( Document document )
{
public ExcelToFoConverter(Document document) {
this.foDocumentFacade = new FoDocumentFacade(document);
}
public ExcelToFoConverter( FoDocumentFacade foDocumentFacade )
{
public ExcelToFoConverter(FoDocumentFacade foDocumentFacade) {
this.foDocumentFacade = foDocumentFacade;
}
protected String createPageMaster( float tableWidthIn, String pageMasterName )
{
protected String createPageMaster(float tableWidthIn, String pageMasterName) {
final float paperHeightIn;
final float paperWidthIn;
{
float requiredWidthIn = tableWidthIn + 2 * getPageMarginInches();
if ( requiredWidthIn < PAPER_A4_WIDTH_INCHES )
{
if (requiredWidthIn < PAPER_A4_WIDTH_INCHES) {
// portrait orientation
paperWidthIn = PAPER_A4_WIDTH_INCHES;
paperHeightIn = PAPER_A4_HEIGHT_INCHES;
}
else
{
} else {
// landscape orientation
paperWidthIn = requiredWidthIn;
paperHeightIn = paperWidthIn
@ -165,13 +161,11 @@ public class ExcelToFoConverter extends AbstractExcelConverter
}
@Override
protected Document getDocument()
{
protected Document getDocument() {
return foDocumentFacade.getDocument();
}
public float getPageMarginInches()
{
public float getPageMarginInches() {
return pageMarginInches;
}
@ -194,28 +188,22 @@ public class ExcelToFoConverter extends AbstractExcelConverter
protected boolean processCell(HSSFWorkbook workbook, HSSFCell cell,
Element tableCellElement, int normalWidthPx, int maxSpannedWidthPx,
float normalHeightPt )
{
float normalHeightPt) {
final HSSFCellStyle cellStyle = cell.getCellStyle();
String value;
switch ( cell.getCellType() )
{
switch (cell.getCellType()) {
case STRING:
// XXX: enrich
value = cell.getRichStringCellValue().getString();
break;
case FORMULA:
switch ( cell.getCachedFormulaResultType() )
{
switch (cell.getCachedFormulaResultType()) {
case STRING:
HSSFRichTextString str = cell.getRichStringCellValue();
if ( str != null && str.length() > 0 )
{
if (str != null && str.length() > 0) {
value = (str.toString());
}
else
{
} else {
value = AbstractExcelUtils.EMPTY;
}
break;
@ -254,7 +242,7 @@ public class ExcelToFoConverter extends AbstractExcelConverter
return true;
}
final boolean noText = AbstractExcelUtils.isEmpty( value );
final boolean noText = isEmpty(value);
final boolean wrapInDivs = !noText && !cellStyle.getWrapText();
final boolean emptyStyle = isEmptyStyle(cellStyle);
@ -267,11 +255,9 @@ public class ExcelToFoConverter extends AbstractExcelConverter
value = "\u00A0";
}
if ( isOutputLeadingSpacesAsNonBreaking() && value.startsWith( " " ) )
{
if (isOutputLeadingSpacesAsNonBreaking() && value.startsWith(" ")) {
StringBuilder builder = new StringBuilder();
for ( int c = 0; c < value.length(); c++ )
{
for (int c = 0; c < value.length(); c++) {
if (value.charAt(c) != ' ') {
break;
}
@ -288,16 +274,14 @@ public class ExcelToFoConverter extends AbstractExcelConverter
Text text = foDocumentFacade.createText(value);
Element block = foDocumentFacade.createBlock();
if ( wrapInDivs )
{
if (wrapInDivs) {
block.setAttribute("absolute-position", "fixed");
block.setAttribute("left", "0px");
block.setAttribute("top", "0px");
block.setAttribute("bottom", "0px");
block.setAttribute("min-width", normalWidthPx + "px");
if ( maxSpannedWidthPx != Integer.MAX_VALUE )
{
if (maxSpannedWidthPx != Integer.MAX_VALUE) {
block.setAttribute("max-width", maxSpannedWidthPx + "px");
}
@ -313,38 +297,35 @@ public class ExcelToFoConverter extends AbstractExcelConverter
block.appendChild(text);
tableCellElement.appendChild(block);
return AbstractExcelUtils.isEmpty( value ) && emptyStyle;
return isEmpty(value) && emptyStyle;
}
protected void processCellStyle(HSSFWorkbook workbook,
HSSFCellStyle cellStyle, Element cellTarget, Element blockTarget )
{
HSSFCellStyle cellStyle, Element cellTarget, Element blockTarget) {
blockTarget.setAttribute("white-space-collapse", "false");
{
String textAlign = AbstractExcelUtils.getAlign( cellStyle.getAlignment() );
if ( AbstractExcelUtils.isNotEmpty( textAlign ) )
String textAlign = getAlign(cellStyle.getAlignment());
if (isNotEmpty(textAlign)) {
blockTarget.setAttribute("text-align", textAlign);
}
if ( cellStyle.getFillPattern() == FillPatternType.NO_FILL )
{
// no fill
}
else if ( cellStyle.getFillPattern() == FillPatternType.SOLID_FOREGROUND )
{
if (cellStyle.getFillPattern() == FillPatternType.NO_FILL) {
// no fill
} else if (cellStyle.getFillPattern() == FillPatternType.SOLID_FOREGROUND) {
final HSSFColor foregroundColor = cellStyle
.getFillForegroundColorColor();
if ( foregroundColor != null )
if (foregroundColor != null) {
cellTarget.setAttribute("background-color",
AbstractExcelUtils.getColor( foregroundColor ) );
getColor(foregroundColor));
}
else
{
} else {
final HSSFColor backgroundColor = cellStyle
.getFillBackgroundColorColor();
if ( backgroundColor != null )
if (backgroundColor != null) {
cellTarget.setAttribute("background-color",
AbstractExcelUtils.getColor( backgroundColor ) );
getColor(backgroundColor));
}
}
processCellStyleBorder(workbook, cellTarget, "top",
@ -362,31 +343,29 @@ public class ExcelToFoConverter extends AbstractExcelConverter
}
protected void processCellStyleBorder(HSSFWorkbook workbook,
Element cellTarget, String type, BorderStyle xlsBorder, short borderColor )
{
if ( xlsBorder == BorderStyle.NONE )
Element cellTarget, String type, BorderStyle xlsBorder, short borderColor) {
if (xlsBorder == BorderStyle.NONE) {
return;
}
StringBuilder borderStyle = new StringBuilder();
borderStyle.append( AbstractExcelUtils.getBorderWidth( xlsBorder ) );
borderStyle.append(getBorderWidth(xlsBorder));
final HSSFColor color = workbook.getCustomPalette().getColor(
borderColor);
if ( color != null )
{
if (color != null) {
borderStyle.append(' ');
borderStyle.append( AbstractExcelUtils.getColor( color ) );
borderStyle.append(getColor(color));
borderStyle.append(' ');
borderStyle.append( AbstractExcelUtils.getBorderStyle( xlsBorder ) );
borderStyle.append(getBorderStyle(xlsBorder));
}
cellTarget.setAttribute("border-" + type, borderStyle.toString());
}
protected void processCellStyleFont(HSSFWorkbook workbook,
Element blockTarget, HSSFFont font )
{
Element blockTarget, HSSFFont font) {
Triplet triplet = new Triplet();
triplet.fontName = font.getFontName();
triplet.bold = font.getBold();
@ -397,34 +376,34 @@ public class ExcelToFoConverter extends AbstractExcelConverter
final HSSFColor fontColor = workbook.getCustomPalette().getColor(
font.getColor());
if ( fontColor != null )
if (fontColor != null) {
blockTarget.setAttribute("color",
AbstractExcelUtils.getColor( fontColor ) );
getColor(fontColor));
}
if ( font.getFontHeightInPoints() != 0 )
if (font.getFontHeightInPoints() != 0) {
blockTarget.setAttribute("font-size", font.getFontHeightInPoints()
+ "pt");
}
}
protected void processColumnHeaders(HSSFSheet sheet, int maxSheetColumns,
Element table )
{
Element table) {
Element tableHeader = foDocumentFacade.createTableHeader();
Element row = foDocumentFacade.createTableRow();
if ( isOutputRowNumbers() )
{
if (isOutputRowNumbers()) {
// empty cell at left-top corner
final Element tableCellElement = foDocumentFacade.createTableCell();
tableCellElement.appendChild(foDocumentFacade.createBlock());
row.appendChild(tableCellElement);
}
for ( int c = 0; c < maxSheetColumns; c++ )
{
if ( !isOutputHiddenColumns() && sheet.isColumnHidden( c ) )
for (int c = 0; c < maxSheetColumns; c++) {
if (!isOutputHiddenColumns() && sheet.isColumnHidden(c)) {
continue;
}
Element cell = foDocumentFacade.createTableCell();
Element block = foDocumentFacade.createBlock();
@ -449,12 +428,10 @@ public class ExcelToFoConverter extends AbstractExcelConverter
* @return table width in inches
*/
protected float processColumnWidths(HSSFSheet sheet, int maxSheetColumns,
Element table )
{
Element table) {
float tableWidth = 0;
if ( isOutputRowNumbers() )
{
if (isOutputRowNumbers()) {
final float columnWidthIn = getDefaultColumnWidth(sheet) / DPI;
final Element rowNumberColumn = foDocumentFacade
@ -465,10 +442,10 @@ public class ExcelToFoConverter extends AbstractExcelConverter
tableWidth += columnWidthIn;
}
for ( int c = 0; c < maxSheetColumns; c++ )
{
if ( !isOutputHiddenColumns() && sheet.isColumnHidden( c ) )
for (int c = 0; c < maxSheetColumns; c++) {
if (!isOutputHiddenColumns() && sheet.isColumnHidden(c)) {
continue;
}
final float columnWidthIn = getColumnWidth(sheet, c) / DPI;
@ -484,56 +461,56 @@ public class ExcelToFoConverter extends AbstractExcelConverter
}
protected void processDocumentInformation(
SummaryInformation summaryInformation )
{
if ( AbstractExcelUtils.isNotEmpty( summaryInformation.getTitle() ) )
SummaryInformation summaryInformation) {
if (isNotEmpty(summaryInformation.getTitle())) {
foDocumentFacade.setTitle(summaryInformation.getTitle());
}
if ( AbstractExcelUtils.isNotEmpty( summaryInformation.getAuthor() ) )
if (isNotEmpty(summaryInformation.getAuthor())) {
foDocumentFacade.setCreator(summaryInformation.getAuthor());
}
if ( AbstractExcelUtils.isNotEmpty( summaryInformation.getKeywords() ) )
if (isNotEmpty(summaryInformation.getKeywords())) {
foDocumentFacade.setKeywords(summaryInformation.getKeywords());
}
if ( AbstractExcelUtils.isNotEmpty( summaryInformation.getComments() ) )
if (isNotEmpty(summaryInformation.getComments())) {
foDocumentFacade.setDescription(summaryInformation.getComments());
}
}
/**
* @return maximum 1-base index of column that were rendered, zero if none
*/
protected int processRow(HSSFWorkbook workbook,
CellRangeAddress[][] mergedRanges, HSSFRow row,
Element tableRowElement )
{
Element tableRowElement) {
final HSSFSheet sheet = row.getSheet();
final short maxColIx = row.getLastCellNum();
if ( maxColIx <= 0 )
{
if (maxColIx <= 0) {
return 0;
}
final List<Element> emptyCells = new ArrayList<>(maxColIx);
if ( isOutputRowNumbers() )
{
if (isOutputRowNumbers()) {
Element tableRowNumberCellElement = processRowNumber(row);
emptyCells.add(tableRowNumberCellElement);
}
int maxRenderedColumn = 0;
for ( int colIx = 0; colIx < maxColIx; colIx++ )
{
if ( !isOutputHiddenColumns() && sheet.isColumnHidden( colIx ) )
for (int colIx = 0; colIx < maxColIx; colIx++) {
if (!isOutputHiddenColumns() && sheet.isColumnHidden(colIx)) {
continue;
}
CellRangeAddress range = AbstractExcelUtils.getMergedRange(
mergedRanges, row.getRowNum(), colIx );
CellRangeAddress range = getMergedRange(mergedRanges, row.getRowNum(), colIx);
if (range != null
&& (range.getFirstColumn() != colIx || range.getFirstRow() != row
.getRowNum() ) )
.getRowNum())) {
continue;
}
HSSFCell cell = row.getCell(colIx);
@ -543,15 +520,14 @@ public class ExcelToFoConverter extends AbstractExcelConverter
divWidthPx = getColumnWidth(sheet, colIx);
boolean hasBreaks = false;
for ( int nextColumnIndex = colIx + 1; nextColumnIndex < maxColIx; nextColumnIndex++ )
{
for (int nextColumnIndex = colIx + 1; nextColumnIndex < maxColIx; nextColumnIndex++) {
if (!isOutputHiddenColumns()
&& sheet.isColumnHidden( nextColumnIndex ) )
&& sheet.isColumnHidden(nextColumnIndex)) {
continue;
}
if (row.getCell(nextColumnIndex) != null
&& !isTextEmpty( row.getCell( nextColumnIndex ) ) )
{
&& !isTextEmpty(row.getCell(nextColumnIndex))) {
hasBreaks = true;
break;
}
@ -559,47 +535,42 @@ public class ExcelToFoConverter extends AbstractExcelConverter
divWidthPx += getColumnWidth(sheet, nextColumnIndex);
}
if ( !hasBreaks )
if (!hasBreaks) {
divWidthPx = Integer.MAX_VALUE;
}
}
Element tableCellElement = foDocumentFacade.createTableCell();
if ( range != null )
{
if ( range.getFirstColumn() != range.getLastColumn() )
if (range != null) {
if (range.getFirstColumn() != range.getLastColumn()) {
tableCellElement.setAttribute(
"number-columns-spanned",
String.valueOf(range.getLastColumn()
- range.getFirstColumn() + 1));
if ( range.getFirstRow() != range.getLastRow() )
}
if (range.getFirstRow() != range.getLastRow()) {
tableCellElement.setAttribute(
"number-rows-spanned",
String.valueOf(range.getLastRow()
- range.getFirstRow() + 1));
}
}
boolean emptyCell;
if ( cell != null )
{
if (cell != null) {
emptyCell = processCell(workbook, cell, tableCellElement,
getColumnWidth(sheet, colIx), divWidthPx,
row.getHeight() / 20f);
}
else
{
} else {
tableCellElement.appendChild(foDocumentFacade.createBlock());
emptyCell = true;
}
if ( emptyCell )
{
if (emptyCell) {
emptyCells.add(tableCellElement);
}
else
{
for ( Element emptyCellElement : emptyCells )
{
} else {
for (Element emptyCellElement : emptyCells) {
tableRowElement.appendChild(emptyCellElement);
}
emptyCells.clear();
@ -612,8 +583,7 @@ public class ExcelToFoConverter extends AbstractExcelConverter
return maxRenderedColumn + 1;
}
protected Element processRowNumber( HSSFRow row )
{
protected Element processRowNumber(HSSFRow row) {
Element tableRowNumberCellElement = foDocumentFacade.createTableCell();
Element block = foDocumentFacade.createBlock();
@ -628,11 +598,11 @@ public class ExcelToFoConverter extends AbstractExcelConverter
}
protected float processSheet(HSSFWorkbook workbook, HSSFSheet sheet,
Element flow )
{
Element flow) {
final int physicalNumberOfRows = sheet.getPhysicalNumberOfRows();
if ( physicalNumberOfRows <= 0 )
if (physicalNumberOfRows <= 0) {
return 0;
}
processSheetName(sheet, flow);
@ -641,21 +611,21 @@ public class ExcelToFoConverter extends AbstractExcelConverter
Element tableBody = foDocumentFacade.createTableBody();
final CellRangeAddress[][] mergedRanges = ExcelToHtmlUtils
.buildMergedRangesMap( sheet );
final CellRangeAddress[][] mergedRanges = buildMergedRangesMap(sheet);
final List<Element> emptyRowElements = new ArrayList<>(
physicalNumberOfRows);
int maxSheetColumns = 1;
for ( int r = sheet.getFirstRowNum(); r <= sheet.getLastRowNum(); r++ )
{
for (int r = sheet.getFirstRowNum(); r <= sheet.getLastRowNum(); r++) {
HSSFRow row = sheet.getRow(r);
if ( row == null )
if (row == null) {
continue;
}
if ( !isOutputHiddenRows() && row.getZeroHeight() )
if (!isOutputHiddenRows() && row.getZeroHeight()) {
continue;
}
Element tableRowElement = foDocumentFacade.createTableRow();
tableRowElement.setAttribute("height", row.getHeight() / 20f
@ -664,23 +634,17 @@ public class ExcelToFoConverter extends AbstractExcelConverter
int maxRowColumnNumber = processRow(workbook, mergedRanges, row,
tableRowElement);
if ( tableRowElement.getChildNodes().getLength() == 0 )
{
if (tableRowElement.getChildNodes().getLength() == 0) {
Element emptyCellElement = foDocumentFacade.createTableCell();
emptyCellElement.appendChild(foDocumentFacade.createBlock());
tableRowElement.appendChild(emptyCellElement);
}
if ( maxRowColumnNumber == 0 )
{
if (maxRowColumnNumber == 0) {
emptyRowElements.add(tableRowElement);
}
else
{
if ( !emptyRowElements.isEmpty() )
{
for ( Element emptyRowElement : emptyRowElements )
{
} else {
if (!emptyRowElements.isEmpty()) {
for (Element emptyRowElement : emptyRowElements) {
tableBody.appendChild(emptyRowElement);
}
emptyRowElements.clear();
@ -693,8 +657,7 @@ public class ExcelToFoConverter extends AbstractExcelConverter
float tableWidthIn = processColumnWidths(sheet, maxSheetColumns, table);
if ( isOutputColumnHeaders() )
{
if (isOutputColumnHeaders()) {
processColumnHeaders(sheet, maxSheetColumns, table);
}
@ -710,8 +673,7 @@ public class ExcelToFoConverter extends AbstractExcelConverter
* @return <tt>true</tt> if result were added to FO document, <tt>false</tt>
* otherwise
*/
protected boolean processSheet( HSSFWorkbook workbook, int sheetIndex )
{
protected boolean processSheet(HSSFWorkbook workbook, int sheetIndex) {
String pageMasterName = "sheet-" + sheetIndex;
Element pageSequence = foDocumentFacade
@ -722,16 +684,16 @@ public class ExcelToFoConverter extends AbstractExcelConverter
HSSFSheet sheet = workbook.getSheetAt(sheetIndex);
float tableWidthIn = processSheet(workbook, sheet, flow);
if ( tableWidthIn == 0 )
if (tableWidthIn == 0) {
return false;
}
createPageMaster(tableWidthIn, pageMasterName);
foDocumentFacade.addPageSequence(pageSequence);
return true;
}
protected void processSheetName( HSSFSheet sheet, Element flow )
{
protected void processSheetName(HSSFSheet sheet, Element flow) {
Element titleBlock = foDocumentFacade.createBlock();
Triplet triplet = new Triplet();
@ -755,35 +717,33 @@ public class ExcelToFoConverter extends AbstractExcelConverter
flow.appendChild(titleBlock2);
}
public void processWorkbook( HSSFWorkbook workbook )
{
public void processWorkbook(HSSFWorkbook workbook) {
final SummaryInformation summaryInformation = workbook
.getSummaryInformation();
if ( summaryInformation != null )
{
if (summaryInformation != null) {
processDocumentInformation(summaryInformation);
}
for ( int s = 0; s < workbook.getNumberOfSheets(); s++ )
{
for (int s = 0; s < workbook.getNumberOfSheets(); s++) {
processSheet(workbook, s);
}
}
private void setBlockProperties( Element textBlock, Triplet triplet )
{
if ( triplet.bold )
private void setBlockProperties(Element textBlock, Triplet triplet) {
if (triplet.bold) {
textBlock.setAttribute("font-weight", "bold");
if ( triplet.italic )
textBlock.setAttribute( "font-style", "italic" );
if ( AbstractExcelUtils.isNotEmpty( triplet.fontName ) )
textBlock.setAttribute( "font-family", triplet.fontName );
}
public void setPageMarginInches( float pageMarginInches )
{
if (triplet.italic) {
textBlock.setAttribute("font-style", "italic");
}
if (isNotEmpty(triplet.fontName)) {
textBlock.setAttribute("font-family", triplet.fontName);
}
}
public void setPageMarginInches(float pageMarginInches) {
this.pageMarginInches = pageMarginInches;
}

View File

@ -16,6 +16,16 @@
==================================================================== */
package org.apache.poi.hssf.converter;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.appendAlign;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.buildMergedRangesMap;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.getBorderStyle;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.getBorderWidth;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.getColor;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.getMergedRange;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.isEmpty;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.isNotEmpty;
import static org.apache.poi.hssf.converter.AbstractExcelUtils.loadXls;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@ -53,8 +63,6 @@ import org.w3c.dom.Text;
/**
* Converts xls files (97-2007) to HTML file.
*
* @author Sergey Vladimirov (vlsergey {at} gmail {dot} com)
*/
@Beta
public class ExcelToHtmlConverter extends AbstractExcelConverter {
@ -92,14 +100,13 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
/**
* Converts Excel file (97-2007) into HTML file.
*
* @param xlsFile
* workbook file to process
* @param xlsFile workbook file to process
* @return DOM representation of result HTML
* @throws IOException If an error occurs reading or writing files
* @throws ParserConfigurationException If configuration is incorrect
*/
public static Document process(File xlsFile) throws IOException, ParserConfigurationException {
try (HSSFWorkbook workbook = AbstractExcelUtils.loadXls(xlsFile)) {
try (HSSFWorkbook workbook = loadXls(xlsFile)) {
return ExcelToHtmlConverter.process(workbook);
}
}
@ -145,14 +152,13 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
private String cssClassPrefixTable = "t";
private Map<Short, String> excelStyleToClass = new LinkedHashMap<>();
private final Map<Short, String> excelStyleToClass = new LinkedHashMap<>();
private final HtmlDocumentFacade htmlDocumentFacade;
private boolean useDivsToSpan;
public ExcelToHtmlConverter( Document doc )
{
public ExcelToHtmlConverter(Document doc) {
htmlDocumentFacade = new HtmlDocumentFacade(doc);
}
@ -164,21 +170,26 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
StringBuilder style = new StringBuilder();
style.append("white-space:pre-wrap;");
ExcelToHtmlUtils.appendAlign( style, cellStyle.getAlignment() );
appendAlign(style, cellStyle.getAlignment());
switch (cellStyle.getFillPattern()) {
// no fill
case NO_FILL: break;
case NO_FILL:
break;
case SOLID_FOREGROUND:
final HSSFColor foregroundColor = cellStyle.getFillForegroundColorColor();
if ( foregroundColor == null ) break;
String fgCol = AbstractExcelUtils.getColor( foregroundColor );
if (foregroundColor == null) {
break;
}
String fgCol = getColor(foregroundColor);
style.append("background-color:").append(fgCol).append(";");
break;
default:
final HSSFColor backgroundColor = cellStyle.getFillBackgroundColorColor();
if ( backgroundColor == null ) break;
String bgCol = AbstractExcelUtils.getColor( backgroundColor );
if (backgroundColor == null) {
break;
}
String bgCol = getColor(backgroundColor);
style.append("background-color:").append(bgCol).append(";");
break;
}
@ -205,16 +216,14 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
}
StringBuilder borderStyle = new StringBuilder();
borderStyle.append( AbstractExcelUtils.getBorderWidth( xlsBorder ) );
borderStyle.append(getBorderWidth(xlsBorder));
borderStyle.append(' ');
borderStyle.append( AbstractExcelUtils.getBorderStyle( xlsBorder ) );
borderStyle.append(getBorderStyle(xlsBorder));
final HSSFColor color = workbook.getCustomPalette().getColor(
borderColor );
if ( color != null )
{
final HSSFColor color = workbook.getCustomPalette().getColor(borderColor);
if (color != null) {
borderStyle.append(' ');
borderStyle.append( AbstractExcelUtils.getColor( color ) );
borderStyle.append(getColor(color));
}
style.append("border-").append(type).append(":").append(borderStyle).append(";");
@ -222,47 +231,42 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
void buildStyle_font(HSSFWorkbook workbook, StringBuilder style,
HSSFFont font) {
if ( font.getBold() )
{
if (font.getBold()) {
style.append("font-weight:bold;");
}
final HSSFColor fontColor = workbook.getCustomPalette().getColor(
font.getColor());
if ( fontColor != null )
style.append("color: ").append(AbstractExcelUtils.getColor(fontColor)).append("; ");
if (fontColor != null) {
style.append("color: ").append(getColor(fontColor)).append("; ");
}
if ( font.getFontHeightInPoints() != 0 )
if (font.getFontHeightInPoints() != 0) {
style.append("font-size:").append(font.getFontHeightInPoints()).append("pt;");
}
if ( font.getItalic() )
{
if (font.getItalic()) {
style.append("font-style:italic;");
}
}
public String getCssClassPrefixCell()
{
public String getCssClassPrefixCell() {
return cssClassPrefixCell;
}
public String getCssClassPrefixDiv()
{
public String getCssClassPrefixDiv() {
return cssClassPrefixDiv;
}
public String getCssClassPrefixRow()
{
public String getCssClassPrefixRow() {
return cssClassPrefixRow;
}
public String getCssClassPrefixTable()
{
public String getCssClassPrefixTable() {
return cssClassPrefixTable;
}
public Document getDocument()
{
public Document getDocument() {
return htmlDocumentFacade.getDocument();
}
@ -271,8 +275,9 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
final Short cellStyleKey = Short.valueOf(cellStyle.getIndex());
String knownClass = excelStyleToClass.get(cellStyleKey);
if ( knownClass != null )
if (knownClass != null) {
return knownClass;
}
String cssStyle = buildStyle(workbook, cellStyle);
String cssClass = htmlDocumentFacade.getOrCreateCssClass(
@ -281,8 +286,7 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
return cssClass;
}
public boolean isUseDivsToSpan()
{
public boolean isUseDivsToSpan() {
return useDivsToSpan;
}
@ -300,12 +304,9 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
switch (cell.getCachedFormulaResultType()) {
case STRING:
HSSFRichTextString str = cell.getRichStringCellValue();
if ( str != null && str.length() > 0 )
{
if (str != null && str.length() > 0) {
value = (str.toString());
}
else
{
} else {
value = AbstractExcelUtils.EMPTY;
}
break;
@ -344,7 +345,7 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
return true;
}
final boolean noText = AbstractExcelUtils.isEmpty( value );
final boolean noText = isEmpty(value);
final boolean wrapInDivs = !noText && isUseDivsToSpan() && !cellStyle.getWrapText();
if (cellStyle.getIndex() != 0) {
@ -371,15 +372,16 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
if (isOutputLeadingSpacesAsNonBreaking() && value.startsWith(" ")) {
StringBuilder builder = new StringBuilder();
for ( int c = 0; c < value.length(); c++ )
{
if ( value.charAt( c ) != ' ' )
for (int c = 0; c < value.length(); c++) {
if (value.charAt(c) != ' ') {
break;
}
builder.append('\u00a0');
}
if ( value.length() != builder.length() )
if (value.length() != builder.length()) {
builder.append(value.substring(builder.length()));
}
value = builder.toString();
}
@ -403,7 +405,7 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
innerDivStyle.append("overflow:hidden;max-height:");
innerDivStyle.append(normalHeightPt);
innerDivStyle.append("pt;white-space:nowrap;");
ExcelToHtmlUtils.appendAlign( innerDivStyle, cellStyle.getAlignment() );
appendAlign(innerDivStyle, cellStyle.getAlignment());
htmlDocumentFacade.addStyleClass(outerDiv, cssClassPrefixDiv,
innerDivStyle.toString());
@ -414,7 +416,7 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
tableCellElement.appendChild(text);
}
return AbstractExcelUtils.isEmpty( value ) && (cellStyle.getIndex() == 0);
return isEmpty(value) && (cellStyle.getIndex() == 0);
}
protected void processColumnHeaders(HSSFSheet sheet, int maxSheetColumns,
@ -430,8 +432,9 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
}
for (int c = 0; c < maxSheetColumns; c++) {
if ( !isOutputHiddenColumns() && sheet.isColumnHidden( c ) )
if (!isOutputHiddenColumns() && sheet.isColumnHidden(c)) {
continue;
}
Element th = htmlDocumentFacade.createTableHeaderCell();
String text = getColumnName(c);
@ -449,14 +452,13 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
Element table) {
// draw COLS after we know max column number
Element columnGroup = htmlDocumentFacade.createTableColumnGroup();
if ( isOutputRowNumbers() )
{
if (isOutputRowNumbers()) {
columnGroup.appendChild(htmlDocumentFacade.createTableColumn());
}
for ( int c = 0; c < maxSheetColumns; c++ )
{
if ( !isOutputHiddenColumns() && sheet.isColumnHidden( c ) )
for (int c = 0; c < maxSheetColumns; c++) {
if (!isOutputHiddenColumns() && sheet.isColumnHidden(c)) {
continue;
}
Element col = htmlDocumentFacade.createTableColumn();
col.setAttribute("width",
@ -467,19 +469,23 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
}
protected void processDocumentInformation(SummaryInformation summaryInformation) {
if ( AbstractExcelUtils.isNotEmpty( summaryInformation.getTitle() ) )
if (isNotEmpty(summaryInformation.getTitle())) {
htmlDocumentFacade.setTitle(summaryInformation.getTitle());
}
if ( AbstractExcelUtils.isNotEmpty( summaryInformation.getAuthor() ) )
if (isNotEmpty(summaryInformation.getAuthor())) {
htmlDocumentFacade.addAuthor(summaryInformation.getAuthor());
}
if ( AbstractExcelUtils.isNotEmpty( summaryInformation.getKeywords() ) )
if (isNotEmpty(summaryInformation.getKeywords())) {
htmlDocumentFacade.addKeywords(summaryInformation.getKeywords());
}
if ( AbstractExcelUtils.isNotEmpty( summaryInformation.getComments() ) )
if (isNotEmpty(summaryInformation.getComments())) {
htmlDocumentFacade
.addDescription(summaryInformation.getComments());
}
}
/**
* @return maximum 1-base index of column that were rendered, zero if none
@ -488,13 +494,13 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
Element tableRowElement) {
final HSSFSheet sheet = row.getSheet();
final short maxColIx = row.getLastCellNum();
if ( maxColIx <= 0 )
if (maxColIx <= 0) {
return 0;
}
final List<Element> emptyCells = new ArrayList<>(maxColIx);
if ( isOutputRowNumbers() )
{
if (isOutputRowNumbers()) {
Element tableRowNumberCellElement = htmlDocumentFacade
.createTableHeaderCell();
processRowNumber(row, tableRowNumberCellElement);
@ -502,36 +508,34 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
}
int maxRenderedColumn = 0;
for ( int colIx = 0; colIx < maxColIx; colIx++ )
{
if ( !isOutputHiddenColumns() && sheet.isColumnHidden( colIx ) )
for (int colIx = 0; colIx < maxColIx; colIx++) {
if (!isOutputHiddenColumns() && sheet.isColumnHidden(colIx)) {
continue;
}
CellRangeAddress range = AbstractExcelUtils.getMergedRange(
mergedRanges, row.getRowNum(), colIx );
CellRangeAddress range = getMergedRange(mergedRanges, row.getRowNum(), colIx);
if (range != null
&& (range.getFirstColumn() != colIx || range.getFirstRow() != row
.getRowNum() ) )
.getRowNum())) {
continue;
}
HSSFCell cell = row.getCell(colIx);
int divWidthPx = 0;
if ( isUseDivsToSpan() )
{
if (isUseDivsToSpan()) {
divWidthPx = getColumnWidth(sheet, colIx);
boolean hasBreaks = false;
for ( int nextColumnIndex = colIx + 1; nextColumnIndex < maxColIx; nextColumnIndex++ )
{
for (int nextColumnIndex = colIx + 1; nextColumnIndex < maxColIx; nextColumnIndex++) {
if (!isOutputHiddenColumns()
&& sheet.isColumnHidden( nextColumnIndex ) )
&& sheet.isColumnHidden(nextColumnIndex)) {
continue;
}
if (row.getCell(nextColumnIndex) != null
&& !isTextEmpty( row.getCell( nextColumnIndex ) ) )
{
&& !isTextEmpty(row.getCell(nextColumnIndex))) {
hasBreaks = true;
break;
}
@ -539,29 +543,30 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
divWidthPx += getColumnWidth(sheet, nextColumnIndex);
}
if ( !hasBreaks )
if (!hasBreaks) {
divWidthPx = Integer.MAX_VALUE;
}
}
Element tableCellElement = htmlDocumentFacade.createTableCell();
if ( range != null )
{
if ( range.getFirstColumn() != range.getLastColumn() )
if (range != null) {
if (range.getFirstColumn() != range.getLastColumn()) {
tableCellElement.setAttribute(
"colspan",
String.valueOf(range.getLastColumn()
- range.getFirstColumn() + 1));
if ( range.getFirstRow() != range.getLastRow() )
}
if (range.getFirstRow() != range.getLastRow()) {
tableCellElement.setAttribute(
"rowspan",
String.valueOf(range.getLastRow()
- range.getFirstRow() + 1));
}
}
boolean emptyCell;
if ( cell != null )
{
if (cell != null) {
emptyCell = processCell(cell, tableCellElement,
getColumnWidth(sheet, colIx), divWidthPx,
row.getHeight() / 20f);
@ -572,8 +577,7 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
if (emptyCell) {
emptyCells.add(tableCellElement);
} else {
for ( Element emptyCellElement : emptyCells )
{
for (Element emptyCellElement : emptyCells) {
tableRowElement.appendChild(emptyCellElement);
}
emptyCells.clear();
@ -597,8 +601,9 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
processSheetHeader(htmlDocumentFacade.getBody(), sheet);
final int physicalNumberOfRows = sheet.getPhysicalNumberOfRows();
if ( physicalNumberOfRows <= 0 )
if (physicalNumberOfRows <= 0) {
return;
}
Element table = htmlDocumentFacade.createTable();
htmlDocumentFacade.addStyleClass(table, cssClassPrefixTable,
@ -606,8 +611,7 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
Element tableBody = htmlDocumentFacade.createTableBody();
final CellRangeAddress[][] mergedRanges = ExcelToHtmlUtils
.buildMergedRangesMap( sheet );
final CellRangeAddress[][] mergedRanges = buildMergedRangesMap(sheet);
final List<Element> emptyRowElements = new ArrayList<>(
physicalNumberOfRows);
@ -615,11 +619,13 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
for (int r = sheet.getFirstRowNum(); r <= sheet.getLastRowNum(); r++) {
HSSFRow row = sheet.getRow(r);
if ( row == null )
if (row == null) {
continue;
}
if ( !isOutputHiddenRows() && row.getZeroHeight() )
if (!isOutputHiddenRows() && row.getZeroHeight()) {
continue;
}
Element tableRowElement = htmlDocumentFacade.createTableRow();
htmlDocumentFacade.addStyleClass(tableRowElement,
@ -685,23 +691,19 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
htmlDocumentFacade.updateStylesheet();
}
public void setCssClassPrefixCell( String cssClassPrefixCell )
{
public void setCssClassPrefixCell(String cssClassPrefixCell) {
this.cssClassPrefixCell = cssClassPrefixCell;
}
public void setCssClassPrefixDiv( String cssClassPrefixDiv )
{
public void setCssClassPrefixDiv(String cssClassPrefixDiv) {
this.cssClassPrefixDiv = cssClassPrefixDiv;
}
public void setCssClassPrefixRow( String cssClassPrefixRow )
{
public void setCssClassPrefixRow(String cssClassPrefixRow) {
this.cssClassPrefixRow = cssClassPrefixRow;
}
public void setCssClassPrefixTable( String cssClassPrefixTable )
{
public void setCssClassPrefixTable(String cssClassPrefixTable) {
this.cssClassPrefixTable = cssClassPrefixTable;
}
@ -713,8 +715,7 @@ public class ExcelToHtmlConverter extends AbstractExcelConverter {
* with INDENT=YES option, because line breaks will make additional
* (unwanted) changes
*/
public void setUseDivsToSpan( boolean useDivsToSpan )
{
public void setUseDivsToSpan(boolean useDivsToSpan) {
this.useDivsToSpan = useDivsToSpan;
}
}

View File

@ -1,75 +0,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.hssf.converter;
import java.util.Arrays;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.util.Beta;
@Beta
public class ExcelToHtmlUtils extends AbstractExcelUtils {
public static void appendAlign( StringBuilder style, HorizontalAlignment alignment ) {
String cssAlign = getAlign( alignment );
if ( isEmpty( cssAlign ) )
return;
style.append( "text-align:" );
style.append( cssAlign );
style.append( ";" );
}
/**
* Creates a map (i.e. two-dimensional array) filled with ranges. Allow fast
* retrieving {@link CellRangeAddress} of any cell, if cell is contained in
* range.
*
* @see #getMergedRange(CellRangeAddress[][], int, int)
*/
public static CellRangeAddress[][] buildMergedRangesMap( Sheet sheet ) {
CellRangeAddress[][] mergedRanges = new CellRangeAddress[1][];
for ( final CellRangeAddress cellRangeAddress : sheet.getMergedRegions() ) {
final int requiredHeight = cellRangeAddress.getLastRow() + 1;
if ( mergedRanges.length < requiredHeight ) {
mergedRanges = Arrays.copyOf(mergedRanges, requiredHeight, CellRangeAddress[][].class);
}
for ( int r = cellRangeAddress.getFirstRow(); r <= cellRangeAddress
.getLastRow(); r++ ) {
final int requiredWidth = cellRangeAddress.getLastColumn() + 1;
CellRangeAddress[] rowMerged = mergedRanges[r];
if ( rowMerged == null ) {
rowMerged = new CellRangeAddress[requiredWidth];
mergedRanges[r] = rowMerged;
} else {
final int rowMergedLength = rowMerged.length;
if ( rowMergedLength < requiredWidth ) {
rowMerged = mergedRanges[r] =
Arrays.copyOf(rowMerged, requiredWidth, CellRangeAddress[].class);
}
}
Arrays.fill( rowMerged, cellRangeAddress.getFirstColumn(),
cellRangeAddress.getLastColumn() + 1, cellRangeAddress );
}
}
return mergedRanges;
}
}

View File

@ -58,7 +58,7 @@ public class HwmfBitmapDib implements GenericRecord {
public enum BitCount {
/**
* The image SHOULD be in either JPEG or PNG format. <6> Neither of these formats includes
* The image SHOULD be in either JPEG or PNG format. Neither of these formats includes
* a color table, so this value specifies that no color table is present. See [JFIF] and [RFC2083]
* for more information concerning JPEG and PNG compression formats.
*/
@ -257,7 +257,7 @@ public class HwmfBitmapDib implements GenericRecord {
headerCompression == Compression.BI_RGB ||
headerCompression == Compression.BI_BITFIELDS ||
headerCompression == Compression.BI_CMYK) {
int fileSize = (int)Math.min(introSize+bodySize,recordSize);
int fileSize = Math.min(introSize+bodySize,recordSize);
imageData = IOUtils.safelyAllocate(fileSize, MAX_RECORD_LENGTH);
leis.readFully(imageData, 0, introSize);
leis.skipFully(recordSize-fileSize);
@ -271,10 +271,10 @@ public class HwmfBitmapDib implements GenericRecord {
}
}
protected int readHeader(LittleEndianInputStream leis) throws IOException {
protected int readHeader(LittleEndianInputStream leis) {
int size = 0;
/**
/*
* DIBHeaderInfo (variable): Either a BitmapCoreHeader Object or a
* BitmapInfoHeader Object that specifies information about the image.
*

View File

@ -205,7 +205,7 @@ public final class WordExtractor implements POIOLE2TextExtractor {
/**
* Grab the text out of the text pieces. Might also include various bits of
* crud, but will work in cases where the text piece -> paragraph mapping is
* crud, but will work in cases where the text piece -&gt; paragraph mapping is
* broken. Fast too.
*/
public String getTextFromPieces() {

View File

@ -50,7 +50,7 @@ public interface CharIndexTranslator {
boolean isIndexInTable(int bytePos);
/**
* Return first index >= bytePos that is in table
* Return first index &gt;= bytePos that is in table
*
* @param bytePos
* @return first index greater or equal to bytePos that is in table
@ -58,7 +58,7 @@ public interface CharIndexTranslator {
int lookIndexForward(int bytePos);
/**
* Return last index <= bytePos that is in table
* Return last index &lt;= bytePos that is in table
*
* @param bytePos
* @return last index less of equal to bytePos that is in table

View File

@ -137,7 +137,7 @@ public final class ListTables
/**
* Get the ListLevel for a given lsid and level
* @return ListLevel if found, or <code>null</code> if ListData can't be found or if level is > that available
* @return ListLevel if found, or {@code null} if ListData can't be found or if level is &gt; that available
*/
public ListLevel getLevel(int lsid, int level)
{

View File

@ -17,6 +17,8 @@
package org.apache.poi.hwpf.model;
import static org.apache.logging.log4j.util.Unbox.box;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
@ -36,13 +38,11 @@ import org.apache.poi.hwpf.usermodel.Range;
import org.apache.poi.util.Internal;
import org.apache.poi.util.LittleEndian;
import static org.apache.logging.log4j.util.Unbox.box;
/**
* Holds information about all pictures embedded in Word Document either via "Insert -> Picture -> From File" or via
* Holds information about all pictures embedded in Word Document either via "Insert -&gt; Picture -&gt; From File" or via
* clipboard. Responsible for images extraction and determining whether some document's piece contains embedded image.
* Analyzes raw data bytestream 'Data' (where Word stores all embedded objects) provided by HWPFDocument.
*
* <p>
* Word stores images as is within so called "Data stream" - the stream within a Word docfile containing various data
* that hang off of characters in the main stream. For example, binary data describing in-line pictures and/or
* formfields an also embedded objects-native data. Word picture structures are concatenated one after the other in
@ -67,26 +67,16 @@ public final class PicturesTable {
static final int BLOCK_TYPE_OFFSET = 0xE;
static final int MM_MODE_TYPE_OFFSET = 0x6;
private HWPFDocument _document;
private byte[] _dataStream;
private byte[] _mainStream;
private final HWPFDocument _document;
private final byte[] _dataStream;
private final byte[] _mainStream;
@Deprecated
private FSPATable _fspa;
@Deprecated
private OfficeArtContent _dgg;
/** @link dependency
* @stereotype instantiate*/
/*# Picture lnkPicture; */
/**
*
* @param _document
* @param _dataStream
*/
@Deprecated
public PicturesTable(HWPFDocument _document, byte[] _dataStream, byte[] _mainStream, FSPATable fspa, OfficeArtContent dgg)
{
public PicturesTable(HWPFDocument _document, byte[] _dataStream, byte[] _mainStream, FSPATable fspa, OfficeArtContent dgg) {
this._document = _document;
this._dataStream = _dataStream;
this._mainStream = _mainStream;
@ -95,8 +85,7 @@ public final class PicturesTable {
}
public PicturesTable(HWPFDocument _document, byte[] _dataStream,
byte[] _mainStream )
{
byte[] _mainStream) {
this._document = _document;
this._dataStream = _dataStream;
this._mainStream = _mainStream;
@ -104,7 +93,6 @@ public final class PicturesTable {
/**
* determines whether specified CharacterRun contains reference to a picture
* @param run
*/
public boolean hasPicture(CharacterRun run) {
if (run == null) {
@ -121,15 +109,11 @@ public final class PicturesTable {
}
public boolean hasEscherPicture(CharacterRun run) {
if (run.isSpecialCharacter() && !run.isObj() && !run.isOle2() && !run.isData() && run.text().startsWith("\u0008")) {
return true;
}
return false;
return run.isSpecialCharacter() && !run.isObj() && !run.isOle2() && !run.isData() && run.text().startsWith("\u0008");
}
/**
* determines whether specified CharacterRun contains reference to a picture
* @param run
*/
public boolean hasHorizontalLine(CharacterRun run) {
if (run.isSpecialCharacter() && "\u0001".equals(run.text())) {
@ -139,7 +123,10 @@ public final class PicturesTable {
}
private boolean isPictureRecognized(short blockType, short mappingModeOfMETAFILEPICT) {
return (blockType == TYPE_IMAGE || blockType == TYPE_IMAGE_PASTED_FROM_CLIPBOARD || (blockType==TYPE_IMAGE_WORD2000 && mappingModeOfMETAFILEPICT==0x64) || (blockType==TYPE_IMAGE_PASTED_FROM_CLIPBOARD_WORD2000 && mappingModeOfMETAFILEPICT==0x64));
return blockType == TYPE_IMAGE
|| blockType == TYPE_IMAGE_PASTED_FROM_CLIPBOARD
|| blockType == TYPE_IMAGE_WORD2000 && mappingModeOfMETAFILEPICT == 0x64
|| blockType == TYPE_IMAGE_PASTED_FROM_CLIPBOARD_WORD2000 && mappingModeOfMETAFILEPICT == 0x64;
}
private static short getBlockType(byte[] dataStream, int pictOffset) {
@ -152,11 +139,11 @@ public final class PicturesTable {
/**
* Returns picture object tied to specified CharacterRun
* @param run
*
* @param fillBytes if true, Picture will be returned with filled byte array that represent picture's contents. If you don't want
* to have that byte array in memory but only write picture's contents to stream, pass false and then use Picture.writeImageContent
* @see Picture#writeImageContent(OutputStream)
* @return a Picture object if picture exists for specified CharacterRun, null otherwise. PicturesTable.hasPicture is used to determine this.
* @see Picture#writeImageContent(OutputStream)
* @see #hasPicture(CharacterRun)
*/
public Picture extractPicture(CharacterRun run, boolean fillBytes) {
@ -172,36 +159,28 @@ public final class PicturesTable {
* @param escherRecords the escher records.
* @param pictures the list to populate with the pictures.
*/
private void searchForPictures(List<EscherRecord> escherRecords, List<Picture> pictures)
{
private void searchForPictures(List<EscherRecord> escherRecords, List<Picture> pictures) {
for (EscherRecord escherRecord : escherRecords) {
if (escherRecord instanceof EscherBSERecord) {
EscherBSERecord bse = (EscherBSERecord) escherRecord;
EscherBlipRecord blip = bse.getBlipRecord();
if (blip != null)
{
if (blip != null) {
pictures.add(new Picture(blip));
}
else if ( bse.getOffset() > 0 )
{
try
{
} else if (bse.getOffset() > 0) {
try {
// Blip stored in delay stream, which in a word doc, is
// the main stream
EscherRecordFactory recordFactory = new DefaultEscherRecordFactory();
EscherRecord record = recordFactory.createRecord(
_mainStream, bse.getOffset());
if ( record instanceof EscherBlipRecord )
{
if (record instanceof EscherBlipRecord) {
record.fillFields(_mainStream, bse.getOffset(),
recordFactory);
blip = (EscherBlipRecord) record;
pictures.add(new Picture(blip));
}
}
catch ( Exception exc )
{
} catch (Exception exc) {
LOG.atWarn().withThrowable(exc).log("Unable to load picture from BLIP record at offset #{}", box(bse.getOffset()));
}
}
@ -240,13 +219,11 @@ public final class PicturesTable {
return pictures;
}
private boolean isBlockContainsImage(int i)
{
private boolean isBlockContainsImage(int i) {
return isPictureRecognized(getBlockType(_dataStream, i), getMmMode(_dataStream, i));
}
private boolean isBlockContainsHorizontalLine(int i)
{
private boolean isBlockContainsHorizontalLine(int i) {
return getBlockType(_dataStream, i) == TYPE_HORIZONTAL_LINE && getMmMode(_dataStream, i) == 0x64;
}

View File

@ -56,17 +56,13 @@ public abstract class FRDAbstractType {
public String toString()
{
StringBuilder builder = new StringBuilder();
builder.append( "[FRD]\n" );
builder.append( " .nAuto = " );
builder.append( " (" ).append( getNAuto() ).append( " )\n" );
builder.append( "[/FRD]\n" );
return builder.toString();
return "[FRD]\n" +
" .nAuto = (" + getNAuto() + " )\n" +
"[/FRD]\n";
}
/**
* If > 0, the note is an automatically numbered note, otherwise it has a
* If &gt; 0, the note is an automatically numbered note, otherwise it has a
* custom mark.
*/
public short getNAuto()
@ -75,7 +71,7 @@ public abstract class FRDAbstractType {
}
/**
* If > 0, the note is an automatically numbered note, otherwise it has a
* If &gt; 0, the note is an automatically numbered note, otherwise it has a
* custom mark.
*/
public void setNAuto( short field_1_nAuto )
@ -83,4 +79,4 @@ public abstract class FRDAbstractType {
this.field_1_nAuto = field_1_nAuto;
}
} // END OF CLASS
}

View File

@ -81,7 +81,7 @@ public abstract class GrfhicAbstractType
*/
public static int getSize()
{
return 0 + 1;
return 1;
}
@Override
@ -94,9 +94,7 @@ public abstract class GrfhicAbstractType
if ( getClass() != obj.getClass() )
return false;
GrfhicAbstractType other = (GrfhicAbstractType) obj;
if ( field_1_grfhic != other.field_1_grfhic )
return false;
return true;
return field_1_grfhic == other.field_1_grfhic;
}
@Override
@ -106,22 +104,19 @@ public abstract class GrfhicAbstractType
public String toString()
{
StringBuilder builder = new StringBuilder();
builder.append("[Grfhic]\n");
builder.append( " .grfhic = " );
builder.append(" ( ").append( field_1_grfhic ).append( " )\n" );
builder.append(" .fHtmlChecked = ").append(isFHtmlChecked()).append('\n');
builder.append(" .fHtmlUnsupported = ").append(isFHtmlUnsupported()).append('\n');
builder.append(" .fHtmlListTextNotSharpDot = ").append(isFHtmlListTextNotSharpDot()).append('\n');
builder.append(" .fHtmlNotPeriod = ").append(isFHtmlNotPeriod()).append('\n');
builder.append(" .fHtmlFirstLineMismatch = ").append(isFHtmlFirstLineMismatch()).append('\n');
builder.append(" .fHtmlTabLeftIndentMismatch = ").append(isFHtmlTabLeftIndentMismatch()).append('\n');
builder.append(" .fHtmlHangingIndentBeneathNumber = ").append(isFHtmlHangingIndentBeneathNumber()).append('\n');
builder.append(" .fHtmlBuiltInBullet = ").append(isFHtmlBuiltInBullet()).append('\n');
builder.append("[/Grfhic]");
return builder.toString();
String builder = "[Grfhic]\n" +
" .grfhic = " +
" ( " + field_1_grfhic + " )\n" +
" .fHtmlChecked = " + isFHtmlChecked() + '\n' +
" .fHtmlUnsupported = " + isFHtmlUnsupported() + '\n' +
" .fHtmlListTextNotSharpDot = " + isFHtmlListTextNotSharpDot() + '\n' +
" .fHtmlNotPeriod = " + isFHtmlNotPeriod() + '\n' +
" .fHtmlFirstLineMismatch = " + isFHtmlFirstLineMismatch() + '\n' +
" .fHtmlTabLeftIndentMismatch = " + isFHtmlTabLeftIndentMismatch() + '\n' +
" .fHtmlHangingIndentBeneathNumber = " + isFHtmlHangingIndentBeneathNumber() + '\n' +
" .fHtmlBuiltInBullet = " + isFHtmlBuiltInBullet() + '\n' +
"[/Grfhic]";
return builder;
}
/**
@ -164,7 +159,7 @@ public abstract class GrfhicAbstractType
/**
* Sets the fHtmlUnsupported field value.
* The numbering sequence or format is unsupported (includes tab & size)
* The numbering sequence or format is unsupported (includes tab &amp; size)
*/
@Internal
public void setFHtmlUnsupported( boolean value )
@ -173,7 +168,7 @@ public abstract class GrfhicAbstractType
}
/**
* The numbering sequence or format is unsupported (includes tab & size)
* The numbering sequence or format is unsupported (includes tab &amp; size)
* @return the fHtmlUnsupported field value.
*/
@Internal

View File

@ -247,174 +247,91 @@ public abstract class PAPAbstractType {
}
public String toString()
{
StringBuilder builder = new StringBuilder();
builder.append("[PAP]\n");
builder.append(" .istd = ");
builder.append(" (").append(getIstd()).append(" )\n");
builder.append(" .fSideBySide = ");
builder.append(" (").append(getFSideBySide()).append(" )\n");
builder.append(" .fKeep = ");
builder.append(" (").append(getFKeep()).append(" )\n");
builder.append(" .fKeepFollow = ");
builder.append(" (").append(getFKeepFollow()).append(" )\n");
builder.append(" .fPageBreakBefore = ");
builder.append(" (").append(getFPageBreakBefore()).append(" )\n");
builder.append(" .brcl = ");
builder.append(" (").append(getBrcl()).append(" )\n");
builder.append(" .brcp = ");
builder.append(" (").append(getBrcp()).append(" )\n");
builder.append(" .ilvl = ");
builder.append(" (").append(getIlvl()).append(" )\n");
builder.append(" .ilfo = ");
builder.append(" (").append(getIlfo()).append(" )\n");
builder.append(" .fNoLnn = ");
builder.append(" (").append(getFNoLnn()).append(" )\n");
builder.append(" .lspd = ");
builder.append(" (").append(getLspd()).append(" )\n");
builder.append(" .dyaBefore = ");
builder.append(" (").append(getDyaBefore()).append(" )\n");
builder.append(" .dyaAfter = ");
builder.append(" (").append(getDyaAfter()).append(" )\n");
builder.append(" .fInTable = ");
builder.append(" (").append(getFInTable()).append(" )\n");
builder.append(" .finTableW97 = ");
builder.append(" (").append(getFinTableW97()).append(" )\n");
builder.append(" .fTtp = ");
builder.append(" (").append(getFTtp()).append(" )\n");
builder.append(" .dxaAbs = ");
builder.append(" (").append(getDxaAbs()).append(" )\n");
builder.append(" .dyaAbs = ");
builder.append(" (").append(getDyaAbs()).append(" )\n");
builder.append(" .dxaWidth = ");
builder.append(" (").append(getDxaWidth()).append(" )\n");
builder.append(" .fBrLnAbove = ");
builder.append(" (").append(getFBrLnAbove()).append(" )\n");
builder.append(" .fBrLnBelow = ");
builder.append(" (").append(getFBrLnBelow()).append(" )\n");
builder.append(" .pcVert = ");
builder.append(" (").append(getPcVert()).append(" )\n");
builder.append(" .pcHorz = ");
builder.append(" (").append(getPcHorz()).append(" )\n");
builder.append(" .wr = ");
builder.append(" (").append(getWr()).append(" )\n");
builder.append(" .fNoAutoHyph = ");
builder.append(" (").append(getFNoAutoHyph()).append(" )\n");
builder.append(" .dyaHeight = ");
builder.append(" (").append(getDyaHeight()).append(" )\n");
builder.append(" .fMinHeight = ");
builder.append(" (").append(getFMinHeight()).append(" )\n");
builder.append(" .dcs = ");
builder.append(" (").append(getDcs()).append(" )\n");
builder.append(" .dyaFromText = ");
builder.append(" (").append(getDyaFromText()).append(" )\n");
builder.append(" .dxaFromText = ");
builder.append(" (").append(getDxaFromText()).append(" )\n");
builder.append(" .fLocked = ");
builder.append(" (").append(getFLocked()).append(" )\n");
builder.append(" .fWidowControl = ");
builder.append(" (").append(getFWidowControl()).append(" )\n");
builder.append(" .fKinsoku = ");
builder.append(" (").append(getFKinsoku()).append(" )\n");
builder.append(" .fWordWrap = ");
builder.append(" (").append(getFWordWrap()).append(" )\n");
builder.append(" .fOverflowPunct = ");
builder.append(" (").append(getFOverflowPunct()).append(" )\n");
builder.append(" .fTopLinePunct = ");
builder.append(" (").append(getFTopLinePunct()).append(" )\n");
builder.append(" .fAutoSpaceDE = ");
builder.append(" (").append(getFAutoSpaceDE()).append(" )\n");
builder.append(" .fAutoSpaceDN = ");
builder.append(" (").append(getFAutoSpaceDN()).append(" )\n");
builder.append(" .wAlignFont = ");
builder.append(" (").append(getWAlignFont()).append(" )\n");
builder.append(" .fontAlign = ");
builder.append(" (").append(getFontAlign()).append(" )\n");
builder.append(" .fVertical = ").append(isFVertical()).append('\n');
builder.append(" .fBackward = ").append(isFBackward()).append('\n');
builder.append(" .fRotateFont = ").append(isFRotateFont()).append('\n');
builder.append(" .lvl = ");
builder.append(" (").append(getLvl()).append(" )\n");
builder.append(" .fBiDi = ");
builder.append(" (").append(getFBiDi()).append(" )\n");
builder.append(" .fNumRMIns = ");
builder.append(" (").append(getFNumRMIns()).append(" )\n");
builder.append(" .fCrLf = ");
builder.append(" (").append(getFCrLf()).append(" )\n");
builder.append(" .fUsePgsuSettings = ");
builder.append(" (").append(getFUsePgsuSettings()).append(" )\n");
builder.append(" .fAdjustRight = ");
builder.append(" (").append(getFAdjustRight()).append(" )\n");
builder.append(" .itap = ");
builder.append(" (").append(getItap()).append(" )\n");
builder.append(" .fInnerTableCell = ");
builder.append(" (").append(getFInnerTableCell()).append(" )\n");
builder.append(" .fOpenTch = ");
builder.append(" (").append(getFOpenTch()).append(" )\n");
builder.append(" .fTtpEmbedded = ");
builder.append(" (").append(getFTtpEmbedded()).append(" )\n");
builder.append(" .dxcRight = ");
builder.append(" (").append(getDxcRight()).append(" )\n");
builder.append(" .dxcLeft = ");
builder.append(" (").append(getDxcLeft()).append(" )\n");
builder.append(" .dxcLeft1 = ");
builder.append(" (").append(getDxcLeft1()).append(" )\n");
builder.append(" .fDyaBeforeAuto = ");
builder.append(" (").append(getFDyaBeforeAuto()).append(" )\n");
builder.append(" .fDyaAfterAuto = ");
builder.append(" (").append(getFDyaAfterAuto()).append(" )\n");
builder.append(" .dxaRight = ");
builder.append(" (").append(getDxaRight()).append(" )\n");
builder.append(" .dxaLeft = ");
builder.append(" (").append(getDxaLeft()).append(" )\n");
builder.append(" .dxaLeft1 = ");
builder.append(" (").append(getDxaLeft1()).append(" )\n");
builder.append(" .jc = ");
builder.append(" (").append(getJc()).append(" )\n");
builder.append(" .brcTop = ");
builder.append(" (").append(getBrcTop()).append(" )\n");
builder.append(" .brcLeft = ");
builder.append(" (").append(getBrcLeft()).append(" )\n");
builder.append(" .brcBottom = ");
builder.append(" (").append(getBrcBottom()).append(" )\n");
builder.append(" .brcRight = ");
builder.append(" (").append(getBrcRight()).append(" )\n");
builder.append(" .brcBetween = ");
builder.append(" (").append(getBrcBetween()).append(" )\n");
builder.append(" .brcBar = ");
builder.append(" (").append(getBrcBar()).append(" )\n");
builder.append(" .shd = ");
builder.append(" (").append(getShd()).append(" )\n");
builder.append(" .anld = ");
builder.append(" (").append(Arrays.toString(getAnld())).append(" )\n");
builder.append(" .phe = ");
builder.append(" (").append(Arrays.toString(getPhe())).append(" )\n");
builder.append(" .fPropRMark = ");
builder.append(" (").append(getFPropRMark()).append(" )\n");
builder.append(" .ibstPropRMark = ");
builder.append(" (").append(getIbstPropRMark()).append(" )\n");
builder.append(" .dttmPropRMark = ");
builder.append(" (").append(getDttmPropRMark()).append(" )\n");
builder.append(" .itbdMac = ");
builder.append(" (").append(getItbdMac()).append(" )\n");
builder.append(" .rgdxaTab = ");
builder.append(" (").append(Arrays.toString(getRgdxaTab())).append(" )\n");
builder.append(" .rgtbd = ");
builder.append(" (").append(Arrays.toString(getRgtbd())).append(" )\n");
builder.append(" .numrm = ");
builder.append(" (").append(Arrays.toString(getNumrm())).append(" )\n");
builder.append(" .ptap = ");
builder.append(" (").append(Arrays.toString(getPtap())).append(" )\n");
builder.append(" .fNoAllowOverlap = ");
builder.append(" (").append(getFNoAllowOverlap()).append(" )\n");
builder.append(" .ipgp = ");
builder.append(" (").append(getIpgp()).append(" )\n");
builder.append(" .rsid = ");
builder.append(" (").append(getRsid()).append(" )\n");
builder.append("[/PAP]\n");
return builder.toString();
public String toString() {
return "[PAP]\n" +
" .istd = (" + getIstd() + " )\n" +
" .fSideBySide = (" + getFSideBySide() + " )\n" +
" .fKeep = (" + getFKeep() + " )\n" +
" .fKeepFollow = (" + getFKeepFollow() + " )\n" +
" .fPageBreakBefore = (" + getFPageBreakBefore() + " )\n" +
" .brcl = (" + getBrcl() + " )\n" +
" .brcp = (" + getBrcp() + " )\n" +
" .ilvl = (" + getIlvl() + " )\n" +
" .ilfo = (" + getIlfo() + " )\n" +
" .fNoLnn = (" + getFNoLnn() + " )\n" +
" .lspd = (" + getLspd() + " )\n" +
" .dyaBefore = (" + getDyaBefore() + " )\n" +
" .dyaAfter = (" + getDyaAfter() + " )\n" +
" .fInTable = (" + getFInTable() + " )\n" +
" .finTableW97 = (" + getFinTableW97() + " )\n" +
" .fTtp = (" + getFTtp() + " )\n" +
" .dxaAbs = (" + getDxaAbs() + " )\n" +
" .dyaAbs = (" + getDyaAbs() + " )\n" +
" .dxaWidth = (" + getDxaWidth() + " )\n" +
" .fBrLnAbove = (" + getFBrLnAbove() + " )\n" +
" .fBrLnBelow = (" + getFBrLnBelow() + " )\n" +
" .pcVert = (" + getPcVert() + " )\n" +
" .pcHorz = (" + getPcHorz() + " )\n" +
" .wr = (" + getWr() + " )\n" +
" .fNoAutoHyph = (" + getFNoAutoHyph() + " )\n" +
" .dyaHeight = (" + getDyaHeight() + " )\n" +
" .fMinHeight = (" + getFMinHeight() + " )\n" +
" .dcs = (" + getDcs() + " )\n" +
" .dyaFromText = (" + getDyaFromText() + " )\n" +
" .dxaFromText = (" + getDxaFromText() + " )\n" +
" .fLocked = (" + getFLocked() + " )\n" +
" .fWidowControl = (" + getFWidowControl() + " )\n" +
" .fKinsoku = (" + getFKinsoku() + " )\n" +
" .fWordWrap = (" + getFWordWrap() + " )\n" +
" .fOverflowPunct = (" + getFOverflowPunct() + " )\n" +
" .fTopLinePunct = (" + getFTopLinePunct() + " )\n" +
" .fAutoSpaceDE = (" + getFAutoSpaceDE() + " )\n" +
" .fAutoSpaceDN = (" + getFAutoSpaceDN() + " )\n" +
" .wAlignFont = (" + getWAlignFont() + " )\n" +
" .fontAlign = (" + getFontAlign() + " )\n" +
" .fVertical = " + isFVertical() + '\n' +
" .fBackward = " + isFBackward() + '\n' +
" .fRotateFont = " + isFRotateFont() + '\n' +
" .lvl = (" + getLvl() + " )\n" +
" .fBiDi = (" + getFBiDi() + " )\n" +
" .fNumRMIns = (" + getFNumRMIns() + " )\n" +
" .fCrLf = (" + getFCrLf() + " )\n" +
" .fUsePgsuSettings = (" + getFUsePgsuSettings() + " )\n" +
" .fAdjustRight = (" + getFAdjustRight() + " )\n" +
" .itap = (" + getItap() + " )\n" +
" .fInnerTableCell = (" + getFInnerTableCell() + " )\n" +
" .fOpenTch = (" + getFOpenTch() + " )\n" +
" .fTtpEmbedded = (" + getFTtpEmbedded() + " )\n" +
" .dxcRight = (" + getDxcRight() + " )\n" +
" .dxcLeft = (" + getDxcLeft() + " )\n" +
" .dxcLeft1 = (" + getDxcLeft1() + " )\n" +
" .fDyaBeforeAuto = (" + getFDyaBeforeAuto() + " )\n" +
" .fDyaAfterAuto = (" + getFDyaAfterAuto() + " )\n" +
" .dxaRight = (" + getDxaRight() + " )\n" +
" .dxaLeft = (" + getDxaLeft() + " )\n" +
" .dxaLeft1 = (" + getDxaLeft1() + " )\n" +
" .jc = (" + getJc() + " )\n" +
" .brcTop = (" + getBrcTop() + " )\n" +
" .brcLeft = (" + getBrcLeft() + " )\n" +
" .brcBottom = (" + getBrcBottom() + " )\n" +
" .brcRight = (" + getBrcRight() + " )\n" +
" .brcBetween = (" + getBrcBetween() + " )\n" +
" .brcBar = (" + getBrcBar() + " )\n" +
" .shd = (" + getShd() + " )\n" +
" .anld = (" + Arrays.toString(getAnld()) + " )\n" +
" .phe = (" + Arrays.toString(getPhe()) + " )\n" +
" .fPropRMark = (" + getFPropRMark() + " )\n" +
" .ibstPropRMark = (" + getIbstPropRMark() + " )\n" +
" .dttmPropRMark = (" + getDttmPropRMark() + " )\n" +
" .itbdMac = (" + getItbdMac() + " )\n" +
" .rgdxaTab = (" + Arrays.toString(getRgdxaTab()) + " )\n" +
" .rgtbd = (" + Arrays.toString(getRgtbd()) + " )\n" +
" .numrm = (" + Arrays.toString(getNumrm()) + " )\n" +
" .ptap = (" + Arrays.toString(getPtap()) + " )\n" +
" .fNoAllowOverlap = (" + getFNoAllowOverlap() + " )\n" +
" .ipgp = (" + getIpgp() + " )\n" +
" .rsid = (" + getRsid() + " )\n" +
"[/PAP]\n";
}
/**
@ -1785,7 +1702,7 @@ public abstract class PAPAbstractType {
}
/**
* Number of tabs stops defined for paragraph. Must be >= 0 and <= 64..
* Number of tabs stops defined for paragraph. Must be &gt;= 0 and &lt;= 64..
*/
@Internal
public int getItbdMac()
@ -1794,7 +1711,7 @@ public abstract class PAPAbstractType {
}
/**
* Number of tabs stops defined for paragraph. Must be >= 0 and <= 64..
* Number of tabs stops defined for paragraph. Must be &gt;= 0 and &lt;= 64..
*/
@Internal
public void setItbdMac( int field_72_itbdMac )

View File

@ -895,7 +895,7 @@ public abstract class TAPAbstractType {
}
/**
* Count of cells defined for this row. itcMac must be >= 0 and less than or equal to 64..
* Count of cells defined for this row. itcMac must be &gt;= 0 and less than or equal to 64..
*/
@Internal
public short getItcMac()
@ -904,7 +904,7 @@ public abstract class TAPAbstractType {
}
/**
* Count of cells defined for this row. itcMac must be >= 0 and less than or equal to 64..
* Count of cells defined for this row. itcMac must be &gt;= 0 and less than or equal to 64..
*/
@Internal
public void setItcMac( short field_26_itcMac )

View File

@ -547,11 +547,9 @@ public class Paragraph extends Range implements Duplicatable {
}
/**
* Returns number of tabs stops defined for paragraph. Must be >= 0 and <=
* 64.
* Returns number of tabs stops defined for paragraph. Must be &gt;= 0 and &lt;= 64.
*
* @return number of tabs stops defined for paragraph. Must be >= 0 and <=
* 64
* @return number of tabs stops defined for paragraph. Must be &gt;= 0 and &lt;= 64
*/
public int getTabStopsNumber()
{

View File

@ -65,7 +65,7 @@ public class TestExcelConverterSuite
{
HSSFWorkbook workbook;
try {
workbook = ExcelToHtmlUtils.loadXls( child );
workbook = AbstractExcelUtils.loadXls( child );
} catch ( Exception exc ) {
// unable to parse file -- not ExcelToFoConverter fault
return;
@ -91,7 +91,7 @@ public class TestExcelConverterSuite
{
HSSFWorkbook workbook;
try {
workbook = ExcelToHtmlUtils.loadXls( child );
workbook = AbstractExcelUtils.loadXls( child );
} catch ( Exception exc ) {
// unable to parse file -- not ExcelToFoConverter fault
return;