wuwu1231314 2012-08-13 15:04
浏览 290
已采纳

用JXL把一个xls的数据内容插入到另一个xls中去,样式不变。有劳各位帮忙,不胜感激

一部分代码如下,剩下的思路就搞不出来了(有报错):
public class TestJxl {
public static void main(String args[]){
JFileChooser jfc=new JFileChooser();
jfc.showOpenDialog(null);
File f1=jfc.getSelectedFile();
int q,w;
List list=new ArrayList();
try{
// 构建Workbook对象, 只读Workbook对象
// 直接从本地文件创建Workbook, 从输入流创建Workbook
FileInputStream fis=new FileInputStream(f1);
Workbook wb1=Workbook.getWorkbook(f1);
jxl.Sheet st=wb1.getSheet(0);
Cell cell=null;
q=st.getColumns();
w=st.getRows();
for(int i=0;i<q;i++){
for(int j=0;j<w;j++){
cell=st.getCell(i, j);
list.add(cell.getContents());
}
}
for(String ss:list){
System.out.println(ss);
}
System.out.println(list.get(0));
wb1.close();
fis.close();
jfc.showSaveDialog(null);
File f2=jfc.getSelectedFile();
FileOutputStream fos=new FileOutputStream(f2);
//获取可写工作簿
WritableWorkbook wwb=Workbook.createWorkbook(fos);
// 读取第一张工作表
WritableSheet dataSheet=wwb.getSheet(0);
// 设置冻结单元格
dataSheet.getSettings().setVerticalFreeze(5);
dataSheet.getSettings().setHorizontalFreeze(4);
int y=0;
for(int i=0;i<q;i++){
for(int j=5;j<5+w;j++){
dataSheet.addCell(new Label(i, j, list.get(y++)));
}
}
wwb.write();
wwb.close();
fos.close();
}catch(Exception ex){
ex.printStackTrace();
}

}

}
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at jxl.write.biff.WritableWorkbookImpl.getSheet(WritableWorkbookImpl.java:408)
at test.TestJxl.main(TestJxl.java:67)

  • 写回答

1条回答 默认 最新

  • Dead_Knight 2012-08-13 16:32
    关注

    这段代码是错误的
    [code="java"]
    //获取可写工作簿
    WritableWorkbook wwb=Workbook.createWorkbook(fos);
    // 读取第一张工作表
    WritableSheet dataSheet=wwb.getSheet(0);
    [/code]
    因为新建的workbook还没有sheet,所以getSheet(0)会导致IndexOutOfBoundsException异常。
    应该修改为:
    WritableSheet dataSheet=wwb.createSheet("sheet名称", 0);

    还有个问题:
    实际上你这样复制并不能达到样式不变。
    如果样式固定的情况,可以先用jxl做好样式,然后复制的时候,把原来的样式设置到新的excel中。如果样式复杂,建议采用jacob操作excel可变的数据部分。
    希望我的思路对你有用

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算