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:
parent
699ddabcdf
commit
e13f7dc8af
@ -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();
|
||||||
|
@ -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) {
|
||||||
|
@ -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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user