Fix some Sonar issues in sample "HSSFReadWrite"

Fix some IntelliJ warnings

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1786695 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Dominik Stadler 2017-03-13 14:09:27 +00:00
parent 699ddabcdf
commit e13f7dc8af
3 changed files with 175 additions and 160 deletions

View File

@ -44,12 +44,12 @@ import org.apache.poi.ss.util.CellRangeAddress;
public final class HSSFReadWrite { public final class HSSFReadWrite {
/** /**
* creates an {@link HSSFWorkbook} the specified OS filename. * creates an {@link HSSFWorkbook} with the specified OS filename.
*/ */
private static HSSFWorkbook readFile(String filename) throws IOException { private static HSSFWorkbook readFile(String filename) throws IOException {
FileInputStream fis = new FileInputStream(filename); FileInputStream fis = new FileInputStream(filename);
try { try {
return new HSSFWorkbook(fis); return new HSSFWorkbook(fis); // NOSONAR - should not be closed here
} finally { } finally {
fis.close(); fis.close();
} }
@ -60,76 +60,79 @@ public final class HSSFReadWrite {
* rows/cells. * rows/cells.
*/ */
private static void testCreateSampleSheet(String outputFilename) throws IOException { private static void testCreateSampleSheet(String outputFilename) throws IOException {
int rownum;
HSSFWorkbook wb = new HSSFWorkbook(); HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet s = wb.createSheet();
HSSFCellStyle cs = wb.createCellStyle();
HSSFCellStyle cs2 = wb.createCellStyle();
HSSFCellStyle cs3 = wb.createCellStyle();
HSSFFont f = wb.createFont();
HSSFFont f2 = wb.createFont();
f.setFontHeightInPoints((short) 12);
f.setColor((short) 0xA);
f.setBold(true);
f2.setFontHeightInPoints((short) 10);
f2.setColor((short) 0xf);
f2.setBold(true);
cs.setFont(f);
cs.setDataFormat(HSSFDataFormat.getBuiltinFormat("($#,##0_);[Red]($#,##0)"));
cs2.setBorderBottom(BorderStyle.THIN);
cs2.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cs2.setFillForegroundColor((short) 0xA);
cs2.setFont(f2);
wb.setSheetName(0, "HSSF Test");
for (rownum = 0; rownum < 300; rownum++) {
HSSFRow r = s.createRow(rownum);
if ((rownum % 2) == 0) {
r.setHeight((short) 0x249);
}
for (int cellnum = 0; cellnum < 50; cellnum += 2) {
HSSFCell c = r.createCell(cellnum);
c.setCellValue(rownum * 10000 + cellnum
+ (((double) rownum / 1000) + ((double) cellnum / 10000)));
if ((rownum % 2) == 0) {
c.setCellStyle(cs);
}
c = r.createCell(cellnum + 1);
c.setCellValue(new HSSFRichTextString("TEST"));
// 50 characters divided by 1/20th of a point
s.setColumnWidth(cellnum + 1, (int) (50 * 8 / 0.05));
if ((rownum % 2) == 0) {
c.setCellStyle(cs2);
}
}
}
// draw a thick black border on the row at the bottom using BLANKS
rownum++;
rownum++;
HSSFRow r = s.createRow(rownum);
cs3.setBorderBottom(BorderStyle.THICK);
for (int cellnum = 0; cellnum < 50; cellnum++) {
HSSFCell c = r.createCell(cellnum);
c.setCellStyle(cs3);
}
s.addMergedRegion(new CellRangeAddress(0, 3, 0, 3));
s.addMergedRegion(new CellRangeAddress(100, 110, 100, 110));
// end draw thick black border
// create a sheet, set its title then delete it
wb.createSheet();
wb.setSheetName(1, "DeletedSheet");
wb.removeSheetAt(1);
// end deleted sheet
FileOutputStream out = new FileOutputStream(outputFilename);
try { try {
wb.write(out); HSSFSheet s = wb.createSheet();
HSSFCellStyle cs = wb.createCellStyle();
HSSFCellStyle cs2 = wb.createCellStyle();
HSSFCellStyle cs3 = wb.createCellStyle();
HSSFFont f = wb.createFont();
HSSFFont f2 = wb.createFont();
f.setFontHeightInPoints((short) 12);
f.setColor((short) 0xA);
f.setBold(true);
f2.setFontHeightInPoints((short) 10);
f2.setColor((short) 0xf);
f2.setBold(true);
cs.setFont(f);
cs.setDataFormat(HSSFDataFormat.getBuiltinFormat("($#,##0_);[Red]($#,##0)"));
cs2.setBorderBottom(BorderStyle.THIN);
cs2.setFillPattern(FillPatternType.SOLID_FOREGROUND);
cs2.setFillForegroundColor((short) 0xA);
cs2.setFont(f2);
wb.setSheetName(0, "HSSF Test");
int rownum;
for (rownum = 0; rownum < 300; rownum++) {
HSSFRow r = s.createRow(rownum);
if ((rownum % 2) == 0) {
r.setHeight((short) 0x249);
}
for (int cellnum = 0; cellnum < 50; cellnum += 2) {
HSSFCell c = r.createCell(cellnum);
c.setCellValue(rownum * 10000 + cellnum
+ (((double) rownum / 1000) + ((double) cellnum / 10000)));
if ((rownum % 2) == 0) {
c.setCellStyle(cs);
}
c = r.createCell(cellnum + 1);
c.setCellValue(new HSSFRichTextString("TEST"));
// 50 characters divided by 1/20th of a point
s.setColumnWidth(cellnum + 1, (int) (50 * 8 / 0.05));
if ((rownum % 2) == 0) {
c.setCellStyle(cs2);
}
}
}
// draw a thick black border on the row at the bottom using BLANKS
rownum++;
rownum++;
HSSFRow r = s.createRow(rownum);
cs3.setBorderBottom(BorderStyle.THICK);
for (int cellnum = 0; cellnum < 50; cellnum++) {
HSSFCell c = r.createCell(cellnum);
c.setCellStyle(cs3);
}
s.addMergedRegion(new CellRangeAddress(0, 3, 0, 3));
s.addMergedRegion(new CellRangeAddress(100, 110, 100, 110));
// end draw thick black border
// create a sheet, set its title then delete it
wb.createSheet();
wb.setSheetName(1, "DeletedSheet");
wb.removeSheetAt(1);
// end deleted sheet
FileOutputStream out = new FileOutputStream(outputFilename);
try {
wb.write(out);
} finally {
out.close();
}
} finally { } finally {
out.close(); wb.close();
wb.close();
} }
} }
@ -165,48 +168,64 @@ public final class HSSFReadWrite {
HSSFWorkbook wb = HSSFReadWrite.readFile(fileName); HSSFWorkbook wb = HSSFReadWrite.readFile(fileName);
System.out.println("Data dump:\n"); try {
System.out.println("Data dump:\n");
for (int k = 0; k < wb.getNumberOfSheets(); k++) { for (int k = 0; k < wb.getNumberOfSheets(); k++) {
HSSFSheet sheet = wb.getSheetAt(k); HSSFSheet sheet = wb.getSheetAt(k);
int rows = sheet.getPhysicalNumberOfRows(); int rows = sheet.getPhysicalNumberOfRows();
System.out.println("Sheet " + k + " \"" + wb.getSheetName(k) + "\" has " + rows System.out.println("Sheet " + k + " \"" + wb.getSheetName(k) + "\" has " + rows
+ " row(s)."); + " row(s).");
for (int r = 0; r < rows; r++) { for (int r = 0; r < rows; r++) {
HSSFRow row = sheet.getRow(r); HSSFRow row = sheet.getRow(r);
if (row == null) { if (row == null) {
continue; continue;
} }
int cells = row.getPhysicalNumberOfCells(); System.out.println("\nROW " + row.getRowNum() + " has " + row.getPhysicalNumberOfCells() + " cell(s).");
System.out.println("\nROW " + row.getRowNum() + " has " + cells for (int c = 0; c < row.getLastCellNum(); c++) {
+ " cell(s)."); HSSFCell cell = row.getCell(c);
for (int c = 0; c < cells; c++) { String value;
HSSFCell cell = row.getCell(c);
String value = null; if(cell != null) {
switch (cell.getCellTypeEnum()) {
switch (cell.getCellTypeEnum()) {
case FORMULA:
case FORMULA: value = "FORMULA value=" + cell.getCellFormula();
value = "FORMULA value=" + cell.getCellFormula(); break;
break;
case NUMERIC:
case NUMERIC: value = "NUMERIC value=" + cell.getNumericCellValue();
value = "NUMERIC value=" + cell.getNumericCellValue(); break;
break;
case STRING:
case STRING: value = "STRING value=" + cell.getStringCellValue();
value = "STRING value=" + cell.getStringCellValue(); break;
break;
case BLANK:
default: value = "<BLANK>";
break;
case BOOLEAN:
value = "BOOLEAN value-" + cell.getBooleanCellValue();
break;
case ERROR:
value = "ERROR value=" + cell.getErrorCellValue();
break;
default:
value = "UNKNOWN value of type " + cell.getCellTypeEnum();
}
System.out.println("CELL col=" + cell.getColumnIndex() + " VALUE="
+ value);
}
} }
System.out.println("CELL col=" + cell.getColumnIndex() + " VALUE="
+ value);
} }
} }
} finally {
wb.close();
} }
wb.close();
} else if (args.length == 2) { } else if (args.length == 2) {
if (args[1].toLowerCase(Locale.ROOT).equals("write")) { if (args[1].toLowerCase(Locale.ROOT).equals("write")) {
System.out.println("Write mode"); System.out.println("Write mode");
@ -218,36 +237,47 @@ public final class HSSFReadWrite {
} else { } else {
System.out.println("readwrite test"); System.out.println("readwrite test");
HSSFWorkbook wb = HSSFReadWrite.readFile(fileName); HSSFWorkbook wb = HSSFReadWrite.readFile(fileName);
FileOutputStream stream = new FileOutputStream(args[1]); try {
FileOutputStream stream = new FileOutputStream(args[1]);
wb.write(stream); try {
stream.close(); wb.write(stream);
wb.close(); } finally {
stream.close();
}
} finally {
wb.close();
}
} }
} else if (args.length == 3 && args[2].toLowerCase(Locale.ROOT).equals("modify1")) { } else if (args.length == 3 && args[2].equalsIgnoreCase("modify1")) {
// delete row 0-24, row 74 - 99 && change cell 3 on row 39 to string "MODIFIED CELL!!" // delete row 0-24, row 74 - 99 && change cell 3 on row 39 to string "MODIFIED CELL!!"
HSSFWorkbook wb = HSSFReadWrite.readFile(fileName); HSSFWorkbook wb = HSSFReadWrite.readFile(fileName);
FileOutputStream stream = new FileOutputStream(args[1]); try {
HSSFSheet sheet = wb.getSheetAt(0); HSSFSheet sheet = wb.getSheetAt(0);
for (int k = 0; k < 25; k++) { for (int k = 0; k < 25; k++) {
HSSFRow row = sheet.getRow(k); HSSFRow row = sheet.getRow(k);
sheet.removeRow(row); sheet.removeRow(row);
}
for (int k = 74; k < 100; k++) {
HSSFRow row = sheet.getRow(k);
sheet.removeRow(row);
}
HSSFRow row = sheet.getRow(39);
HSSFCell cell = row.getCell(3);
cell.setCellValue("MODIFIED CELL!!!!!");
FileOutputStream stream = new FileOutputStream(args[1]);
try {
wb.write(stream);
} finally {
stream.close();
}
} finally {
wb.close();
} }
for (int k = 74; k < 100; k++) {
HSSFRow row = sheet.getRow(k);
sheet.removeRow(row);
}
HSSFRow row = sheet.getRow(39);
HSSFCell cell = row.getCell(3);
cell.setCellValue("MODIFIED CELL!!!!!");
wb.write(stream);
stream.close();
wb.close();
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -283,33 +283,19 @@ public final class WSBoolRecord extends StandardRecord {
} }
// end bitfields // end bitfields
public String toString() public String toString() {
{ return "[WSBOOL]\n" +
StringBuffer buffer = new StringBuffer(); " .wsbool1 = " + Integer.toHexString(getWSBool1()) + "\n" +
" .autobreaks = " + getAutobreaks() + "\n" +
buffer.append("[WSBOOL]\n"); " .dialog = " + getDialog() + "\n" +
buffer.append(" .wsbool1 = ") " .rowsumsbelw= " + getRowSumsBelow() + "\n" +
.append(Integer.toHexString(getWSBool1())).append("\n"); " .rowsumsrigt= " + getRowSumsRight() + "\n" +
buffer.append(" .autobreaks = ").append(getAutobreaks()) " .wsbool2 = " + Integer.toHexString(getWSBool2()) + "\n" +
.append("\n"); " .fittopage = " + getFitToPage() + "\n" +
buffer.append(" .dialog = ").append(getDialog()) " .displayguts= " + getDisplayGuts() + "\n" +
.append("\n"); " .alternateex= " + getAlternateExpression() + "\n" +
buffer.append(" .rowsumsbelw= ").append(getRowSumsBelow()) " .alternatefo= " + getAlternateFormula() + "\n" +
.append("\n"); "[/WSBOOL]\n";
buffer.append(" .rowsumsrigt= ").append(getRowSumsRight())
.append("\n");
buffer.append(" .wsbool2 = ")
.append(Integer.toHexString(getWSBool2())).append("\n");
buffer.append(" .fittopage = ").append(getFitToPage())
.append("\n");
buffer.append(" .displayguts= ").append(getDisplayGuts())
.append("\n");
buffer.append(" .alternateex= ")
.append(getAlternateExpression()).append("\n");
buffer.append(" .alternatefo= ").append(getAlternateFormula())
.append("\n");
buffer.append("[/WSBOOL]\n");
return buffer.toString();
} }
public void serialize(LittleEndianOutput out) { public void serialize(LittleEndianOutput out) {

View File

@ -908,13 +908,12 @@ public class HSSFCell implements Cell {
case ERROR: case ERROR:
return (( BoolErrRecord ) _record).getErrorValue(); return (( BoolErrRecord ) _record).getErrorValue();
case FORMULA: case FORMULA:
break; FormulaRecord fr = ((FormulaRecordAggregate)_record).getFormulaRecord();
checkFormulaCachedValueType(CellType.ERROR, fr);
return (byte) fr.getCachedErrorValue();
default: default:
throw typeMismatch(CellType.ERROR, _cellType, false); throw typeMismatch(CellType.ERROR, _cellType, false);
} }
FormulaRecord fr = ((FormulaRecordAggregate)_record).getFormulaRecord();
checkFormulaCachedValueType(CellType.ERROR, fr);
return (byte) fr.getCachedErrorValue();
} }
/** /**