java jxl 公式_jxl 读取Excel的公式

[前不久,自己写了一个Jxl读取Excel文件的,支持多张sheet的结构。 要使用,自己去下载jxl这个jar包,具体的作用在文件中有说明。 package lzb.utls.io; import java.

jxl自带的包里有个公式的demo的,你试试看

--------------------------------------

/*********************************************************************

*

*             Copyright   (C)   2002   Andrew   Khan

*

*   This   library   is   free   software;   you   can   redistribute   it   and/or

*   modify   it   under   the   terms   of   the   GNU   Lesser   General   Public

*   License   as   published   by   the   Free   Software   Foundation;   either

*   version   2.1   of   the   License,   or   (at   your   option)   any   later   version.

*

*   This   library   is   distributed   in   the   hope   that   it   will   be   useful,

*   but   WITHOUT   ANY   WARRANTY;   without   even   the   implied   warranty   of

*   MERCHANTABILITY   or   FITNESS   FOR   A   PARTICULAR   PURPOSE.     See   the   GNU

*   Lesser   General   Public   License   for   more   details.

*

*   You   should   have   received   a   copy   of   the   GNU   Lesser   General   Public

*   License   along   with   this   library;   if   not,   write   to   the   Free   Software

*   Foundation,   Inc.,   59   Temple   Place,   Suite   330,   Boston,   MA   02111-1307   USA

***************************************************************************/

package   jxl.demo;

import   java.io.File;

import   java.io.OutputStream;

import   java.io.OutputStreamWriter;

import   java.io.BufferedWriter;

import   java.io.IOException;

import   java.io.UnsupportedEncodingException;

import   java.util.ArrayList;

import   java.util.Iterator;

import   jxl.Workbook;

import   jxl.Sheet;

import   jxl.Cell;

import   jxl.CellType;

import   jxl.FormulaCell;

import   jxl.biff.CellReferenceHelper;

import   jxl.biff.formula.FormulaParser;

import   jxl.biff.formula.ExternalSheet;

import   jxl.biff.formula.FormulaException;

/**

*   Goes   through   each   cell   in   the   workbook,   and   if   the   contents   of   that

*   cell   is   a   formula,   it   prints   out   the   last   calculated   value   and

*   the   formula   string

*/

public   class   Formulas

{

/**

*   Constructor

*

*   @param   w   The   workbook   to   interrogate

*   @param   out   The   output   stream   to   which   the   CSV   values   are   written

*   @param   encoding   The   encoding   used   by   the   output   stream.     Null   or

*   unrecognized   values   cause   the   encoding   to   default   to   UTF8

*   @exception   java.io.IOException

*/

public   Formulas(Workbook   w,   OutputStream   out,   String   encoding)

throws   IOException

{

if   (encoding   ==   null   ||   !encoding.equals("UnicodeBig"))

{

encoding   =   "UTF8";

}

try

{

OutputStreamWriter   osw   =   new   OutputStreamWriter(out,   encoding);

BufferedWriter   bw   =   new   BufferedWriter(osw);

ArrayList   parseErrors   =   new   ArrayList();

for   (int   sheet   =   0;   sheet   <   w.getNumberOfSheets();   sheet++)

{

Sheet   s   =   w.getSheet(sheet);

bw.write(s.getName());

bw.newLine();

Cell[]   row   =   null;

Cell   c   =   null;

for   (int   i   =   0   ;   i   <   s.getRows()   ;   i++)

{

row   =   s.getRow(i);

for   (int   j   =   0;   j   <   row.length;   j++)

{

c   =   row[j];

if   (c.getType()   ==   CellType.NUMBER_FORMULA   ||

c.getType()   ==   CellType.STRING_FORMULA   ||

c.getType()   ==   CellType.BOOLEAN_FORMULA   ||

c.getType()   ==   CellType.DATE_FORMULA   ||

c.getType()   ==   CellType.FORMULA_ERROR)

{

FormulaCell   nfc   =   (FormulaCell)   c;

StringBuffer   sb   =   new   StringBuffer();

CellReferenceHelper.getCellReference

(c.getColumn(),   c.getRow(),   sb);

try

{

bw.write("Formula   in   "     +   sb.toString()   +

"   value:     "   +   c.getContents());

bw.flush();

bw.write("   formula:   "   +   nfc.getFormula());

bw.flush();

bw.newLine();

}

catch   (FormulaException   e)

{

bw.newLine();

parseErrors.add(sb.toString()   +   ":   "   +   e.getMessage());

}

}

}

}

}

bw.flush();

bw.close();

if   (parseErrors.size()   >   0)

{

System.err.println();

System.err.println("There   were   "   +   parseErrors.size()   +   "   errors");

Iterator   i   =   parseErrors.iterator();

while   (i.hasNext())

{

System.err.println(i.next());

}

}

}

catch   (UnsupportedEncodingException   e)

{

System.err.println(e.toString());

}

}

}[ /** * Excel解析类 * * @author tim * */ public class ExcelParse { // 记录读取开始时间 private static long sTime = 0; // 记录读取结束时


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部