j**a如何读出excel表达式计算的值
转一个吧:下面这个程序可以成功读取excel表格,但是输出的excel表格内容却是空的,而且抛出异常 j**a.lang.classcastexception: jxl.write.number cannot be cast to jxl.write.label at createxl.updateexcel(createxl.j**a:34) at createxl.main(createxl.j**a:21)请高手帮忙指点一下,谢谢import j**a.io.*;import j**a.util.random;import j**a.util.date;import jxl.*;import jxl.format.underlinestyle;import jxl.write.*;import jxl.write.number;import jxl.write.boolean;public class createxl{ public createxl() { } public static void main(string[] args) { //读excel createxl.readexcel("f:/1.xls"); //更新excel createxl.updateexcel("d:/new.xls"); } //jxl暂时不提供修改已经存在的数据表,这里通过一个小办法来达到这个目的,不适合大型数据更新! //这里是通过覆盖原文件来更新的. public static void updateexcel(string filepath) { try{ workbook rwb = workbook.getworkbook(new file("f:/1.xls")); writableworkbook wwb = workbook.createworkbook(new file(filepath),rwb);//copy writablesheet ws = wwb.getsheet(0); writablecell wc = ws.getwritablecell(0,0); //判断单元格的类型,做出相应的转换 label label = (label)wc; label.setstring("the value has been modified"); wwb.write(); wwb.close(); rwb.close(); } catch(exception e) { e.printstacktrace(); } } public static void readexcel(string filepath) { /** *后续考虑问题,比如excel里面的图片以及其他数据类型的读取 **/ try { inputstream **=new fileinputstream(filepath); //声名一个工作薄 workbook rwb = workbook.getworkbook(**); //获得工作薄的个数 rwb.getnumberofsheets(); //在excel文档中,第一张工作表的缺省索引是0 sheet st = rwb.getsheet("sheet1"); //通用的获取cell值的方式,getcell(int column, int row) 行和列 int rows=st.getrows(); int cols=st.getcolumns(); system.out.println("当前工作表的名字:"+st.getname()); system.out.println("总行数:"+rows); system.out.println("总列数:"+cols); cell c; for(int j=0;j<cols;j++) { for(int i=0;i<rows;i++) { //getcell(col,row)获得单元格的值 system.out.print((st.getcell(j,i)).getcontents()+"\t"); } system.out.print("\n"); } //操作完成时,关闭对象,释放占用的内存空间 rwb.close(); } catch(exception e) { e.printstacktrace(); } }} 最佳答案 j**a.lang.classcastexception: jxl.write.number cannot be cast to jxl.write.label 类型转换错误 你看报错的34行是这句吗? writablecell wc = ws.getwritablecell(0,0); //判断单元格的类型,做出相应的转换 label label = (label)wc; ws.getwritablecell(0,0);这句取出的应该是number型的吧? 试试用number作转换,number nc = (number)wc 遇到这样的情况可以先判断是哪种类型,再考虑怎么作转换,eg: if(cell.gettype()==celltype.number){ system.out.print(((numbercell)cell).getvalue()); }else if(cell.gettype()==celltype.date){ system.out.print(((datecell)cell).getdate()); } 以上,如有不对之处,请斧正 20210311