用jxl.jar操作excel时,用ws.removeColumn(0)时,抛出数组越界的异常,数组明明没越界啊,这是哪里的问题?不知道有人碰过类似的问题没,请多多指教
代码如下:
package com.shuangmeng.ftpinterface;import java.io.*;import jxl.*;import jxl.write.*;
public class tt {
public void read(){
jxl.Workbook rw;
try {
rw = jxl.Workbook.getWorkbook(new File("d:\\test\\200505-cfd-5mon.xls"));
// 创建可写入的Excel工作薄对象
jxl.write.WritableWorkbook wwb;
wwb = Workbook.createWorkbook(new File("d:\\test\\200cfd-mon.xls"), rw);
// 读取第一张工作表
jxl.write.WritableSheet ws = wwb.getSheet(1);
// 获得第一个单元格对象
jxl.write.WritableCell wc = ws.getWritableCell(0, 2);// 判断单元格的类型, 做出相应的转化
if(wc.getType() == CellType.LABEL)
{
Label l = (Label)wc;
l.setString("The value has been modified.");
}
//ws.removeRow(2);
ws.removeColumn(0);// 写入Excel对象
wwb.write();// 关闭可写入的Excel对象
wwb.close();// 关闭只读的Excel对象
rw.close();
} catch (Exception e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
}
public static void main(String[] args) {
tt rt= new tt();
rt.read();
}}
抛出:
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at jxl.biff.StringHelper.getUnicodeString(StringHelper.java:175)
at jxl.biff.formula.StringValue.read(StringValue.java:87)
at jxl.biff.formula.TokenFormulaParser.parseSubExpression(TokenFormulaParser.java:222)
at jxl.biff.formula.TokenFormulaParser.parse(TokenFormulaParser.java:107)
at jxl.biff.formula.FormulaParser.parse(FormulaParser.java:98)
at jxl.write.biff.ReadFormulaRecord.columnRemoved(ReadFormulaRecord.java:275)
at jxl.write.biff.WritableWorkbookImpl.columnRemoved(WritableWorkbookImpl.java:1224)
at jxl.write.biff.WritableSheetImpl.removeColumn(WritableSheetImpl.java:723)
at com.shuangmeng.ftpinterface.tt.read(tt.java:39)
at com.shuangmeng.ftpinterface.tt.main(tt.java:56)
代码如下:
package com.shuangmeng.ftpinterface;import java.io.*;import jxl.*;import jxl.write.*;
public class tt {
public void read(){
jxl.Workbook rw;
try {
rw = jxl.Workbook.getWorkbook(new File("d:\\test\\200505-cfd-5mon.xls"));
// 创建可写入的Excel工作薄对象
jxl.write.WritableWorkbook wwb;
wwb = Workbook.createWorkbook(new File("d:\\test\\200cfd-mon.xls"), rw);
// 读取第一张工作表
jxl.write.WritableSheet ws = wwb.getSheet(1);
// 获得第一个单元格对象
jxl.write.WritableCell wc = ws.getWritableCell(0, 2);// 判断单元格的类型, 做出相应的转化
if(wc.getType() == CellType.LABEL)
{
Label l = (Label)wc;
l.setString("The value has been modified.");
}
//ws.removeRow(2);
ws.removeColumn(0);// 写入Excel对象
wwb.write();// 关闭可写入的Excel对象
wwb.close();// 关闭只读的Excel对象
rw.close();
} catch (Exception e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
}
public static void main(String[] args) {
tt rt= new tt();
rt.read();
}}
抛出:
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at jxl.biff.StringHelper.getUnicodeString(StringHelper.java:175)
at jxl.biff.formula.StringValue.read(StringValue.java:87)
at jxl.biff.formula.TokenFormulaParser.parseSubExpression(TokenFormulaParser.java:222)
at jxl.biff.formula.TokenFormulaParser.parse(TokenFormulaParser.java:107)
at jxl.biff.formula.FormulaParser.parse(FormulaParser.java:98)
at jxl.write.biff.ReadFormulaRecord.columnRemoved(ReadFormulaRecord.java:275)
at jxl.write.biff.WritableWorkbookImpl.columnRemoved(WritableWorkbookImpl.java:1224)
at jxl.write.biff.WritableSheetImpl.removeColumn(WritableSheetImpl.java:723)
at com.shuangmeng.ftpinterface.tt.read(tt.java:39)
at com.shuangmeng.ftpinterface.tt.main(tt.java:56)
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货