免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 976 | 回复: 0
打印 上一主题 下一主题

利用java操作Excel文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-24 14:54 |只看该作者 |倒序浏览

一.读取Excel文件内容
java 代码
/**读取Excel文件的内容   
* @param file  待读取的文件   
* @return   
*/   
public static String readExcel(File file){   
    StringBuffer sb = new StringBuffer();   
        
    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
            //得到当前工作表的行数   
            int rowNum = sheet.getRows();   
            for(int j=0;j
                //得到当前行的所有单元格   
                Cell[] cells = sheet.getRow(j);   
                if(cells!=null&&cells.length>0){   
                    //对每个单元格进行循环   
                    for(int k=0;k
                        //读取当前单元格的值   
                        String cellValue = cells[k].getContents();   
                        sb.append(cellValue+"\t");   
                    }   
                }   
                sb.append("\r\n");   
            }   
            sb.append("\r\n");   
        }   
    }   
    //最后关闭资源,释放内存   
    wb.close();   
    return sb.toString();   
}   
二.写入Excel文件
这里有很多格式了,比如文本内容加粗,加上某些颜色等,可以参考jxl的api,同时还推荐一篇不错的文章:
http://www.ibm.com/developerworks/cn/java/l-javaExcel/?ca=j-t10
java 代码
/**生成一个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;i10;i++){   
                for(int j=0;j5;j++){   
                    //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行   
                    Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");   
                    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();   
            }   
        }   
    }   
三.在一个Excel文件中查找是否包含某一个关键字
java 代码
/**搜索某一个文件中是否包含某个关键字   
     * @param file  待搜索的文件   
     * @param keyWord  要搜索的关键字   
     * @return   
     */   
    public static boolean searchKeyWord(File file,String keyWord){   
        boolean res = false;   
            
        Workbook wb = null;   
        try {   
            //构造Workbook(工作薄)对象   
            wb=Workbook.getWorkbook(file);   
        } catch (BiffException e) {   
            return res;   
        } catch (IOException e) {   
            return res;   
        }   
            
        if(wb==null)   
            return res;   
            
        //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了   
        Sheet[] sheet = wb.getSheets();   
            
        boolean breakSheet = false;   
            
        if(sheet!=null&&sheet.length>0){   
            //对每个工作表进行循环   
            for(int i=0;i
                if(breakSheet)   
                    break;   
                    
                //得到当前工作表的行数   
                int rowNum = sheet.getRows();   
                    
                boolean breakRow = false;   
                    
                for(int j=0;j
                    if(breakRow)   
                        break;   
                    //得到当前行的所有单元格   
                    Cell[] cells = sheet.getRow(j);   
                    if(cells!=null&&cells.length>0){   
                        boolean breakCell = false;   
                        //对每个单元格进行循环   
                        for(int k=0;k
                            if(breakCell)   
                                break;   
                            //读取当前单元格的值   
                            String cellValue = cells[k].getContents();   
                            if(cellValue==null)   
                                continue;   
                            if(cellValue.contains(keyWord)){   
                                res = true;   
                                breakCell = true;   
                                breakRow = true;   
                                breakSheet = true;   
                            }   
                        }   
                    }   
                }   
            }   
        }   
        //最后关闭资源,释放内存   
        wb.close();   
            
        return res;   
    }   
四.往Excel中插入图片图标
插入图片的实现很容易,参看以下代码:
java 代码
/**往Excel中插入图片   
* @param dataSheet  待插入的工作表   
* @param col 图片从该列开始   
* @param row 图片从该行开始   
* @param width 图片所占的列数   
* @param height 图片所占的行数   
* @param imgFile 要插入的图片文件   
*/   
public static void insertImg(WritableSheet dataSheet, int col, int row, int width,   
        int height, File imgFile){   
    WritableImage img = new WritableImage(col, row, width, height, imgFile);   
    dataSheet.addImage(img);   
}   
以上代码的注释已经很清楚了,大概也就不用再解释了,我们可以用如下程序验证:
java 代码
    try {   
        //创建一个工作薄   
WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));   
//待插入的工作表   
WritableSheet imgSheet = workbook.createSheet("Images",0);   
//要插入的图片文件   
File imgFile = new File("D:/1.png");   
//图片插入到第二行第一个单元格,长宽各占六个单元格   
insertImg(imgSheet,0,1,6,6,imgFile);   
workbook.write();   
workbook.close();   
catch (IOException e) {   
e.printStackTrace();   
catch (WriteException e) {   
e.printStackTrace();   
但是jxl只支持png格式的图片,jpg格式和gif格式都不支持
五.插入页眉页脚
一般的页眉页脚都分为三个部分,左,中,右三部分,利用如下代码可实现插入页眉页脚
java 代码
/**向Excel中加入页眉页脚   
* @param dataSheet 待加入页眉的工作表   
* @param left   
* @param center   
* @param right   
*/   
public static void setHeader(WritableSheet dataSheet,String left,String center,String right){   
    HeaderFooter hf = new HeaderFooter();   
    hf.getLeft().append(left);   
    hf.getCentre().append(center);   
    hf.getRight().append(right);   
    //加入页眉   
    dataSheet.getSettings().setHeader(hf);   
    //加入页脚   
    //dataSheet.getSettings().setFooter(hf);   
}   
我们可以用如下代码测试该方法:
java 代码
    try {   
        //创建一个工作薄   
    WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls"));   
    //待插入的工作表   
    WritableSheet dataSheet = workbook.createSheet("加入页眉",0);   
    ExcelUtils.setHeader(dataSheet, "chb", "2007-03-06", "第1页,共3页");   
    workbook.write();   
    workbook.close();   
} catch (IOException e) {   
    e.printStackTrace();   
} catch (WriteException e) {   
    e.printStackTrace();   
}   
  }   

文件:
ExcelUtils.zip
大小:
1KB
下载:
下载


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/70940/showart_1090770.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP