writing string formulas now work
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352822 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
50609a09c9
commit
3b6f854e14
@ -210,7 +210,6 @@ public class FormulaParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Get an Identifier */
|
/** Get an Identifier */
|
||||||
private String GetName() {
|
private String GetName() {
|
||||||
StringBuffer Token = new StringBuffer();
|
StringBuffer Token = new StringBuffer();
|
||||||
@ -225,6 +224,20 @@ public class FormulaParser {
|
|||||||
return Token.toString();
|
return Token.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**Get an Identifier AS IS, without stripping white spaces or
|
||||||
|
converting to uppercase; used for literals */
|
||||||
|
private String GetNameAsIs() {
|
||||||
|
StringBuffer Token = new StringBuffer();
|
||||||
|
if (!IsAlpha(Look)) {
|
||||||
|
Expected("Name");
|
||||||
|
}
|
||||||
|
while (IsAlNum(Look) || IsWhite(Look)) {
|
||||||
|
Token = Token.append(Look);
|
||||||
|
GetChar();
|
||||||
|
}
|
||||||
|
return Token.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Get a Number */
|
/** Get a Number */
|
||||||
private String GetNum() {
|
private String GetNum() {
|
||||||
@ -355,7 +368,7 @@ public class FormulaParser {
|
|||||||
|
|
||||||
private void StringLiteral() {
|
private void StringLiteral() {
|
||||||
Match('"');
|
Match('"');
|
||||||
String name= GetName();
|
String name= GetNameAsIs();
|
||||||
Match('"');
|
Match('"');
|
||||||
tokens.add(new StringPtg(name));
|
tokens.add(new StringPtg(name));
|
||||||
}
|
}
|
||||||
|
@ -114,7 +114,7 @@ public class StringPtg
|
|||||||
|
|
||||||
public String toFormulaString(SheetReferences refs)
|
public String toFormulaString(SheetReferences refs)
|
||||||
{
|
{
|
||||||
return getValue();
|
return "\""+getValue()+"\"";
|
||||||
}
|
}
|
||||||
public byte getDefaultOperandClass() {
|
public byte getDefaultOperandClass() {
|
||||||
return Ptg.CLASS_VALUE;
|
return Ptg.CLASS_VALUE;
|
||||||
|
BIN
src/testcases/org/apache/poi/hssf/data/StringFormulas.xls
Normal file
BIN
src/testcases/org/apache/poi/hssf/data/StringFormulas.xls
Normal file
Binary file not shown.
@ -824,6 +824,40 @@ extends TestCase {
|
|||||||
out.close();
|
out.close();
|
||||||
assertTrue("file exists",file.exists());
|
assertTrue("file exists",file.exists());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testStringFormulas()
|
||||||
|
throws java.io.IOException
|
||||||
|
{
|
||||||
|
String readFilename = System.getProperty("HSSF.testdata.path");
|
||||||
|
|
||||||
|
File file = File.createTempFile("testStringFormula",".xls");
|
||||||
|
FileOutputStream out = new FileOutputStream(file);
|
||||||
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||||||
|
HSSFSheet s = wb.createSheet("A");
|
||||||
|
HSSFRow r = null;
|
||||||
|
HSSFCell c = null;
|
||||||
|
r = s.createRow((short)0);
|
||||||
|
c=r.createCell((short)1); c.setCellFormula("UPPER(\"abc\")");
|
||||||
|
c=r.createCell((short)2); c.setCellFormula("LOWER(\"ABC\")");
|
||||||
|
c=r.createCell((short)3); c.setCellFormula("CONCATENATE(\" my \",\" name \")");
|
||||||
|
|
||||||
|
wb.write(out);
|
||||||
|
out.close();
|
||||||
|
|
||||||
|
assertTrue("file exists",file.exists());
|
||||||
|
|
||||||
|
FileInputStream in = new FileInputStream(readFilename+File.separator+"StringFormulas.xls");
|
||||||
|
wb = new HSSFWorkbook(in);
|
||||||
|
s = wb.getSheetAt(0);
|
||||||
|
r = s.getRow(0);
|
||||||
|
c = r.getCell((short)0);
|
||||||
|
assertTrue("expected: UPPER(\"xyz\") got "+c.getCellFormula(), ("UPPER(\"xyz\")").equals(c.getCellFormula()));
|
||||||
|
//c = r.getCell((short)1);
|
||||||
|
//assertTrue("expected: A!A1+A!B1 got: "+c.getCellFormula(), ("A!A1+A!B1").equals(c.getCellFormula()));
|
||||||
|
in.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void main(String [] args) {
|
public static void main(String [] args) {
|
||||||
System.out
|
System.out
|
||||||
.println("Testing org.apache.poi.hssf.usermodel.TestFormulas");
|
.println("Testing org.apache.poi.hssf.usermodel.TestFormulas");
|
||||||
|
Loading…
Reference in New Issue
Block a user