关注,没有做过图片的jxl。
更没做过把图片写到数据库里的。有想法~~~~
我试试去  成功了告诉你

解决方案 »

  1.   

    楼上的说法  似乎就不符合LZ 的要求了 (你那样做只是读取保存数据了)lz,我想了下, 做不到
    jxl是读取单元格的,你插入一个图片,图片的位置不在某单元格里啊,你读不到内容
    我是这么理解的,高手指教啊
      

  2.   

    呵呵,我给你一个吧,昨天刚做了的,
    这个保证能过,都是比较简单的,你看看
    不过按照自己的需求要自己修改一下,
    你看一下吧,
    有两个,一个是网上的,能用的,一个是自己的,也是能用的,格式你可以在前台设置为xls格式的传入.
    说明:这个是用struts2 + spring的,其实框架跟这个操作没有关系,都可以完成,public String toImportMsisdnAreacfg(){
    return "toImport";
    }
    public String importMsisdnAreacfg(){
    //startTime and endTime use to test 
    long startTime = System.currentTimeMillis();

    try{
    String targetDirectory = context.getRealPath("/upload");
    String targetFileName = uploadFileName;

    File target = new File(targetDirectory,targetFileName);
    FileUtils.copyFile(upload, target);

    workbook = Workbook.getWorkbook(target);

    sheet = workbook.getSheet(0);

    int rows = sheet.getRows();
    String firstNumber = null;
    String secondNumber = null;
    for(int i = 1;i < rows;i++){
    cell = sheet.getRow(i);
    for(int j = 0;j < cell.length;j++){
    if(j == 0){
    firstNumber = cell[j].getContents();
    }else{
    secondNumber = cell[j].getContents();
    }
    }
    msisdnAreacfgBs.saveMsisdnAreacfg(firstNumber, secondNumber);
    }
    }catch(Exception e){
    //don't do anything;
    }finally{

    }

    long endTime = System.currentTimeMillis();
    System.out.println(endTime - startTime);
    return "showList";
    }
      

  3.   

    这个是网上写的,只要你理解了其中的那几个属性,你就能够操作,/**读取Excel文件的内容   
    * @param file  待读取的文件   
    * @return   
    */   
    public static String readExcel(File file){     StringBuffer sb = new StringBuffer();   
        int rowNum = 0; 
        String cellValue = ""; 
            
        Workbook wb = null;    
        try {    
            //构造Workbook(工作薄)对象    
            wb = Workbook.getWorkbook(file);    
        } catch (BiffException e) {    
            e.printStackTrace();    
        } catch (IOException e) {    
            e.printStackTrace();    
        }    
            
        if(wb==null)    
            return null;    
            
        //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了    
        Sheet[] sheet = wb.getSheets();    
            
        if(sheet!=null&&sheet.length>0){    
            //对每个工作表进行循环    
            for(int i=0;i<sheet.length;i++) 
            { 
                //得到当前工作表的行数   
                rowNum = sheet[i].getRows(); 
                for(int j=0;j<rowNum;j++){ 
                Cell[] cells = sheet[i].getRow(j); 
                if(cells != null && cells.length>0){ 
                for(int k=0;k<cells.length;k++){ 
                cellValue = cells[k].getContents(); 
                sb.append(cellValue + "\t"); 
                } 
                } 
                sb.append("\r\n"); 
                } 
                sb.append("\r\n"); 
            } 
        } 
        //最后关闭资源,释放内存    
        wb.close();    
        return sb.toString();    
    }   
    /**生成一个Excel文件   
         * @param fileName  要生成的Excel文件名   
         */   
        public static void writeExcel(String fileName){    
            WritableWorkbook wwb = null;    
            try {    
                //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象    
                wwb = Workbook.createWorkbook(new File(fileName));    
            } catch (IOException e) {    
                e.printStackTrace();    
            }    
            if(wwb!=null){    
                //创建一个可写入的工作表    
                //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置    
                WritableSheet ws = wwb.createSheet("sheet1", 0);    
                    
                //下面开始添加单元格    
                for(int i=0;i<10;i++){    
                    for(int j=0;j<5;j++){    
                        //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行    
                        Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");    
                        labelC.setString("nihao"); 
                        try {    
                            //将生成的单元格添加到工作表中    
                            ws.addCell(labelC);    
                        } catch (RowsExceededException e) {    
                            e.printStackTrace();    
                        } catch (WriteException e) {    
                            e.printStackTrace();    
                        }    
       
                    }    
                }    
       
                try {    
                    //从内存中写入文件中    
                    wwb.write();    
                    //关闭资源,释放内存    
                    wwb.close();    
                } catch (IOException e) {    
                    e.printStackTrace();    
                } catch (WriteException e) {    
                    e.printStackTrace();    
                }    
            }    
        }
      

  4.   

    sebatinsky这位大哥,我需要的是读取excel中图片的数据,对于基本数据的处理我自己已经写好了,关于图片处理的问题,正式由于我在网上找了,没找到具体操作的方法。关于api我也看了。
    下面是我的一些代码:
    jxl.Workbook rwb = jxl.Workbook.getWorkbook(getInputStream(request));
    jxl.Sheet sh = rwb.getSheet(0); // 获取指定sheet,这里设置为第一个sheet,可根据具体情况在今后进行扩展。
    jxl.Sheet s2 = rwb.getSheet(1); 
    jxl.Sheet s3 = rwb.getSheet(2);
    int rCount = s3.getRows();// 取总行数。
    jxl.Image image = sh.getDrawing(0);
    byte[] b = image.getImageData();
    通过sheet下面的getDrawing(0)应该是能获取图片数据的,并且byte数组中b中的数据是有的,不过插入到数据库不是图片格式,而且,无法将byte写到前台页面也不是图片
      

  5.   

    将图片存储到数据库,我也处理过了,用oracle数据库,存大字段就可以了
      

  6.   

    可参考
    jxl.write.WritableSheet.addImage(WritableImage wi);
      

  7.   

    我现在先不考虑如何将图片写入excel,我现在关注的是如何将图片从excel读取出来。另外,好像jxl不支持
    设置excel单元格自动宽度,如果哪位大哥有知道怎么解决设置自动宽度,也请告知。
    兄弟将不胜感激
      

  8.   

    LZ,jxl应该不行,换个别的思路吧
      

  9.   


    File file1 = new File("C:\\1.png");
    FileOutputStream fstream = new FileOutputStream(file1);
    BufferedOutputStream  stream = new BufferedOutputStream(fstream);
    stream.write(b);jxl只支持png
      

  10.   

    写入            File xlsFile = new File("c:/testJxl.xls");
                WritableWorkbook wwb = Workbook.createWorkbook(xlsFile);
                WritableSheet ws = wwb.createSheet("Test Sheet 1", 0);
                File imageFile = new File("C:\\1.png");
                WritableImage wi = new WritableImage(1, 4, 6, 18, imageFile);          
                ws.addImage(wi);
                wwb.write();
                wwb.close();imageFile可以从数据库读然后自己组织
      

  11.   

    已经解决了,上面已经说了,数据已经读取到了,就是byte[]数组,将这个byte[]插入数据库就可以了。另外jxl只支持png格式,是说向excel中插入图片的时候只支持png格式,读的时候其他格式同样支持。只不过再存入数据库的时候将byte[]转换为png格式就可以了
    已经解决,谢谢大家的回答。