Bug fix & cleanup
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352389 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
65805d686e
commit
8291c9dc85
@ -4,54 +4,54 @@
|
|||||||
|
|
||||||
<todo title="Things To Do for Poi">
|
<todo title="Things To Do for Poi">
|
||||||
|
|
||||||
<devs>
|
<devs>
|
||||||
<!-- in strict alphabetical order -->
|
<!-- in strict alphabetical order -->
|
||||||
<person id="AO" name="Andrew C. Oliver" email="acoliver2@users.sourceforge.net"/>
|
<person id="AO" name="Andrew C. Oliver" email="acoliver2@users.sourceforge.net"/>
|
||||||
<person id="GS" name="Glen Stampoultzis" email="gstamp@iprimus.com.au"/>
|
<person id="GS" name="Glen Stampoultzis" email="gstamp@iprimus.com.au"/>
|
||||||
<person id="MJ" name="Marc Johnson" email="mjohnson at apache dot org"/>
|
<person id="MJ" name="Marc Johnson" email="mjohnson at apache dot org"/>
|
||||||
<person id="NKB" name="Nicola Ken Barozzi" email="barozzi@nicolaken.com"/>
|
<person id="NKB" name="Nicola Ken Barozzi" email="barozzi@nicolaken.com"/>
|
||||||
<person id="open" name="Poi Developers" email="poi-dev@jakarta.apache.org"/>
|
<person id="open" name="Poi Developers" email="poi-dev@jakarta.apache.org"/>
|
||||||
</devs>
|
</devs>
|
||||||
|
|
||||||
<actions priority="high">
|
<actions priority="high">
|
||||||
<action context="code" assigned-to="NKB">
|
<action context="code" assigned-to="NKB">
|
||||||
Finish HDF
|
Finish HDF
|
||||||
</action>
|
</action>
|
||||||
<action context="code" assigned-to="NKB">
|
<action context="code" assigned-to="NKB">
|
||||||
Finish Charts
|
Finish Charts
|
||||||
</action>
|
</action>
|
||||||
<action context="code">
|
<action context="code">
|
||||||
Add Formulas.
|
Add Formulas.
|
||||||
</action>
|
</action>
|
||||||
|
|
||||||
</actions>
|
</actions>
|
||||||
|
|
||||||
<actions priority="medium">
|
<actions priority="medium">
|
||||||
<action context="code">
|
<action context="code">
|
||||||
Expose functionality in low level records in higher level API
|
Expose functionality in low level records in higher level API
|
||||||
</action>
|
</action>
|
||||||
<action context="code">
|
<action context="code">
|
||||||
Implement more record types (for other things ... not sure
|
Implement more record types (for other things ... not sure
|
||||||
what this will mean yet).
|
what this will mean yet).
|
||||||
</action>
|
</action>
|
||||||
<action context="code">
|
<action context="code">
|
||||||
Implement more record types (for other things ... not sure
|
Implement more record types (for other things ... not sure
|
||||||
what this will mean yet).
|
what this will mean yet).
|
||||||
</action>
|
</action>
|
||||||
<action context="code">
|
<action context="code">
|
||||||
Add more dummy checks (for when API user's do things they
|
Add more dummy checks (for when API user's do things they
|
||||||
"can't" do)
|
"can't" do)
|
||||||
</action>
|
</action>
|
||||||
<action context="code">
|
<action context="code">
|
||||||
Add support for embedded graphics and stuff like that.
|
Add support for embedded graphics and stuff like that.
|
||||||
</action>
|
</action>
|
||||||
<action context="code">
|
<action context="code">
|
||||||
Create new adapter object for handling MulBlank, MulRk, Rk
|
Create new adapter object for handling MulBlank, MulRk, Rk
|
||||||
records.
|
records.
|
||||||
</action>
|
</action>
|
||||||
<action context="code">
|
<action context="code">
|
||||||
Add a way to copy sheets.
|
Add a way to copy sheets.
|
||||||
</action>
|
</action>
|
||||||
</actions>
|
</actions>
|
||||||
|
|
||||||
</todo>
|
</todo>
|
||||||
|
@ -55,21 +55,17 @@
|
|||||||
|
|
||||||
package org.apache.poi.hssf.model;
|
package org.apache.poi.hssf.model;
|
||||||
|
|
||||||
import java.io.OutputStream;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
import org.apache.poi.util.POILogFactory;
|
import org.apache.poi.util.POILogFactory;
|
||||||
import org.apache.poi.hssf
|
import org.apache.poi.hssf.record.*; // normally I don't do this, buy we literally mean ALL
|
||||||
.record.*; // normally I don't do this, buy we literally mean ALL
|
|
||||||
import org.apache.poi.hssf.record.formula.FormulaUtil;
|
import org.apache.poi.hssf.record.formula.FormulaUtil;
|
||||||
import org.apache.poi.hssf.record.formula.Ptg;
|
import org.apache.poi.hssf.record.formula.Ptg;
|
||||||
import org.apache.poi.util.IntList;
|
import org.apache.poi.util.IntList;
|
||||||
import org.apache.poi.util.POILogger;
|
import org.apache.poi.util.POILogger;
|
||||||
import org.apache.poi.hssf.record
|
import org.apache.poi.hssf.record.aggregates.*; // normally I don't do this, buy we literally mean ALL
|
||||||
.aggregates.*; // normally I don't do this, buy we literally mean ALL
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Low level model implementation of a Sheet (one workbook contains many sheets)
|
* Low level model implementation of a Sheet (one workbook contains many sheets)
|
||||||
@ -116,7 +112,7 @@ public class Sheet
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates new Sheet with no intialization --useless at this point
|
* Creates new Sheet with no intialization --useless at this point
|
||||||
* @see #createSheet(List,int,int)
|
* @see #createSheet(List,int)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Sheet()
|
public Sheet()
|
||||||
@ -132,7 +128,6 @@ public class Sheet
|
|||||||
* is normally called via Workbook.
|
* is normally called via Workbook.
|
||||||
*
|
*
|
||||||
* @param recs array containing those records in the sheet in sequence (normally obtained from RecordFactory)
|
* @param recs array containing those records in the sheet in sequence (normally obtained from RecordFactory)
|
||||||
* @param sheetnum integer specifying the sheet's number (0,1 or 2 in this release)
|
|
||||||
* @param offset of the sheet's BOF record
|
* @param offset of the sheet's BOF record
|
||||||
*
|
*
|
||||||
* @return Sheet object with all values set to those read from the file
|
* @return Sheet object with all values set to those read from the file
|
||||||
@ -140,7 +135,7 @@ public class Sheet
|
|||||||
* @see org.apache.poi.hssf.model.Workbook
|
* @see org.apache.poi.hssf.model.Workbook
|
||||||
* @see org.apache.poi.hssf.record.Record
|
* @see org.apache.poi.hssf.record.Record
|
||||||
*/
|
*/
|
||||||
public static Sheet createSheet(List recs, int sheetnum, int offset)
|
public static Sheet createSheet(List recs, int offset)
|
||||||
{
|
{
|
||||||
log.logFormatted(log.DEBUG,
|
log.logFormatted(log.DEBUG,
|
||||||
"Sheet createSheet (existing file) with %",
|
"Sheet createSheet (existing file) with %",
|
||||||
@ -240,15 +235,14 @@ public class Sheet
|
|||||||
* only the record offset is assumed to be 0.
|
* only the record offset is assumed to be 0.
|
||||||
*
|
*
|
||||||
* @param records array containing those records in the sheet in sequence (normally obtained from RecordFactory)
|
* @param records array containing those records in the sheet in sequence (normally obtained from RecordFactory)
|
||||||
* @param sheetnum integer specifying the sheet's number (0,1 or 2 in this release)
|
|
||||||
* @return Sheet object
|
* @return Sheet object
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public static Sheet createSheet(List records, int sheetnum)
|
public static Sheet createSheet(List records)
|
||||||
{
|
{
|
||||||
log.log(log.DEBUG,
|
log.log(log.DEBUG,
|
||||||
"Sheet createSheet (exisiting file) assumed offset 0");
|
"Sheet createSheet (exisiting file) assumed offset 0");
|
||||||
return createSheet(records, sheetnum, 0);
|
return createSheet(records);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -63,7 +63,6 @@ import java.util.*;
|
|||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
|
|
||||||
import org.apache.poi.util.LittleEndian;
|
import org.apache.poi.util.LittleEndian;
|
||||||
import org.apache.poi.util.HexDump;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Title: Record Factory<P>
|
* Title: Record Factory<P>
|
||||||
@ -103,7 +102,7 @@ public class RecordFactory
|
|||||||
WindowTwoRecord.class, SelectionRecord.class, ContinueRecord.class,
|
WindowTwoRecord.class, SelectionRecord.class, ContinueRecord.class,
|
||||||
LabelRecord.class, BlankRecord.class, ColumnInfoRecord.class,
|
LabelRecord.class, BlankRecord.class, ColumnInfoRecord.class,
|
||||||
MulRKRecord.class, MulBlankRecord.class, MergeCellsRecord.class,
|
MulRKRecord.class, MulBlankRecord.class, MergeCellsRecord.class,
|
||||||
FormulaRecord.class
|
FormulaRecord.class, BoolErrRecord.class
|
||||||
};
|
};
|
||||||
private static Map recordsMap = recordsToMap(records);
|
private static Map recordsMap = recordsToMap(records);
|
||||||
|
|
||||||
@ -221,8 +220,9 @@ public class RecordFactory
|
|||||||
}
|
}
|
||||||
catch (Exception introspectionException)
|
catch (Exception introspectionException)
|
||||||
{
|
{
|
||||||
|
introspectionException.printStackTrace();
|
||||||
throw new RecordFormatException(
|
throw new RecordFormatException(
|
||||||
"Unable to construct record instance");
|
"Unable to construct record instance, the following exception occured: " + introspectionException.getMessage());
|
||||||
}
|
}
|
||||||
if (retval instanceof RKRecord)
|
if (retval instanceof RKRecord)
|
||||||
{
|
{
|
||||||
|
@ -142,11 +142,10 @@ public class HSSFWorkbook
|
|||||||
workbook = Workbook.createWorkbook(records);
|
workbook = Workbook.createWorkbook(records);
|
||||||
setPropertiesFromWorkbook(workbook);
|
setPropertiesFromWorkbook(workbook);
|
||||||
int numRecords = workbook.getNumRecords();
|
int numRecords = workbook.getNumRecords();
|
||||||
int sheetnum = 0;
|
|
||||||
|
|
||||||
while (numRecords < records.size())
|
while (numRecords < records.size())
|
||||||
{
|
{
|
||||||
Sheet sheet = Sheet.createSheet(records, sheetnum, numRecords);
|
Sheet sheet = Sheet.createSheet(records);
|
||||||
|
|
||||||
numRecords += sheet.getNumRecords();
|
numRecords += sheet.getNumRecords();
|
||||||
sheet.convertLabelRecords(
|
sheet.convertLabelRecords(
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
/* ====================================================================
|
/* ====================================================================
|
||||||
* The Apache Software License, Version 1.1
|
* The Apache Software License, Version 1.1
|
||||||
*
|
*
|
||||||
@ -56,14 +55,13 @@
|
|||||||
package org.apache.poi.hssf.usermodel;
|
package org.apache.poi.hssf.usermodel;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.apache.poi.hssf.model.Workbook;
|
|
||||||
import org.apache.poi.hssf.model.Sheet;
|
import org.apache.poi.hssf.model.Sheet;
|
||||||
import org.apache.poi.hssf.record.VCenterRecord;
|
import org.apache.poi.hssf.record.VCenterRecord;
|
||||||
import org.apache.poi.hssf.record.WSBoolRecord;
|
import org.apache.poi.hssf.record.WSBoolRecord;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.FileWriter;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests HSSFSheet. This test case is very incomplete at the moment.
|
* Tests HSSFSheet. This test case is very incomplete at the moment.
|
||||||
@ -74,7 +72,7 @@ import java.io.FileWriter;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public class TestHSSFSheet
|
public class TestHSSFSheet
|
||||||
extends TestCase
|
extends TestCase
|
||||||
{
|
{
|
||||||
public TestHSSFSheet(String s)
|
public TestHSSFSheet(String s)
|
||||||
{
|
{
|
||||||
@ -86,11 +84,11 @@ public class TestHSSFSheet
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public void testBackupRecord()
|
public void testBackupRecord()
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
HSSFWorkbook wb = new HSSFWorkbook();
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||||||
HSSFSheet s = wb.createSheet();
|
HSSFSheet s = wb.createSheet();
|
||||||
Sheet sheet = s.getSheet();
|
Sheet sheet = s.getSheet();
|
||||||
|
|
||||||
assertEquals(true, sheet.getGridsetRecord().getGridset());
|
assertEquals(true, sheet.getGridsetRecord().getGridset());
|
||||||
s.setGridsPrinted(true);
|
s.setGridsPrinted(true);
|
||||||
@ -102,13 +100,13 @@ public class TestHSSFSheet
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public void testVerticallyCenter()
|
public void testVerticallyCenter()
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
HSSFWorkbook wb = new HSSFWorkbook();
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||||||
HSSFSheet s = wb.createSheet();
|
HSSFSheet s = wb.createSheet();
|
||||||
Sheet sheet = s.getSheet();
|
Sheet sheet = s.getSheet();
|
||||||
VCenterRecord record =
|
VCenterRecord record =
|
||||||
( VCenterRecord ) sheet.findFirstRecordBySid(VCenterRecord.sid);
|
(VCenterRecord) sheet.findFirstRecordBySid(VCenterRecord.sid);
|
||||||
|
|
||||||
assertEquals(false, record.getVCenter());
|
assertEquals(false, record.getVCenter());
|
||||||
s.setVerticallyCenter(true);
|
s.setVerticallyCenter(true);
|
||||||
@ -123,11 +121,11 @@ public class TestHSSFSheet
|
|||||||
|
|
||||||
public void testWSBool()
|
public void testWSBool()
|
||||||
{
|
{
|
||||||
HSSFWorkbook wb = new HSSFWorkbook();
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||||||
HSSFSheet s = wb.createSheet();
|
HSSFSheet s = wb.createSheet();
|
||||||
Sheet sheet = s.getSheet();
|
Sheet sheet = s.getSheet();
|
||||||
WSBoolRecord record =
|
WSBoolRecord record =
|
||||||
( WSBoolRecord ) sheet.findFirstRecordBySid(WSBoolRecord.sid);
|
(WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid);
|
||||||
|
|
||||||
// Check defaults
|
// Check defaults
|
||||||
assertEquals(true, record.getAlternateExpression());
|
assertEquals(true, record.getAlternateExpression());
|
||||||
@ -167,4 +165,30 @@ public class TestHSSFSheet
|
|||||||
assertEquals(true, s.getRowSumsBelow());
|
assertEquals(true, s.getRowSumsBelow());
|
||||||
assertEquals(true, s.getRowSumsRight());
|
assertEquals(true, s.getRowSumsRight());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testReadBooleans()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
HSSFWorkbook workbook = new HSSFWorkbook();
|
||||||
|
HSSFSheet sheet = workbook.createSheet("Test boolean");
|
||||||
|
HSSFRow row = sheet.createRow((short) 2);
|
||||||
|
HSSFCell cell = row.createCell((short) 9);
|
||||||
|
cell.setCellValue(true);
|
||||||
|
cell = row.createCell((short) 11);
|
||||||
|
cell.setCellValue(true);
|
||||||
|
File tempFile = File.createTempFile("bool", "test.xls");
|
||||||
|
FileOutputStream stream = new FileOutputStream(tempFile);
|
||||||
|
workbook.write(stream);
|
||||||
|
stream.close();
|
||||||
|
|
||||||
|
FileInputStream readStream = new FileInputStream(tempFile);
|
||||||
|
workbook = new HSSFWorkbook(readStream);
|
||||||
|
sheet = workbook.getSheetAt(0);
|
||||||
|
row = sheet.getRow(2);
|
||||||
|
stream.close();
|
||||||
|
tempFile.delete();
|
||||||
|
assertEquals(2, row.getPhysicalNumberOfCells());
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user