JAVA操作Excel参考

xiaoxiao2026-10-08  1

Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。

 

   今天突然翻到了以前的一个测试,好像也是从哪里拷贝修改改过的,注释里有个IBM的链接 http://www.ibm.com/developerworks/cn/java/l-javaExcel/?ca=j-t10,贴上来当作一个入门参考资料吧。

 

Java代码 import java.io.File;    import java.io.IOException;       import jxl.Cell;    import jxl.HeaderFooter;    import jxl.Sheet;    import jxl.Workbook;    import jxl.format.VerticalAlignment;    import jxl.read.biff.BiffException;    import jxl.write.Label;    import jxl.write.WritableCellFormat;    import jxl.write.WritableImage;    import jxl.write.WritableSheet;    import jxl.write.WritableWorkbook;    import jxl.write.WriteException;    import jxl.write.biff.RowsExceededException;       /**   * @author cjj 2008-12-22 参考:   *         http://www.ibm.com/developerworks/cn/java/l-javaExcel/?ca=j-t10   *    *    */   public class ExcelUtils    {        /**       * 读取Excel文件的内容       *        * @param file       *            待读取的文件       * @return       */       public static String readExcel(final File file)        {            final StringBuffer sb = new StringBuffer();               Workbook wb = null;            try           {                //构造Workbook(工作薄)对象                   wb = Workbook.getWorkbook(file);           }            catch (final BiffException e)            {               e.printStackTrace();           }            catch (final IOException e)            {               e.printStackTrace();           }              if (wb == null) return null;               //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了               final Sheet[] sheet = wb.getSheets();               if (sheet != null && sheet.length > 0)            {                //对每个工作表进行循环                   for (int i = 0; i < sheet.length; i++)                {                    //得到当前工作表的行数                       final int rowNum = sheet[i].getRows();                    for (int j = 0; j < rowNum; j++)                    {                        //得到当前行的所有单元格                           final Cell[] cells = sheet[i].getRow(j);                        if (cells != null && cells.length > 0)                        {                            //对每个单元格进行循环                               for (int k = 0; k < cells.length; k++)                            {                                //读取当前单元格的值                                   final String 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(final String fileName)        {            WritableWorkbook wwb = null;            //格式化            final WritableCellFormat totalFormat = new WritableCellFormat();            try           {                //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象                   wwb = Workbook.createWorkbook(new File(fileName));                //格式化剧中                totalFormat.setVerticalAlignment(VerticalAlignment.CENTRE);             }            catch (final IOException e)            {               e.printStackTrace();           }            catch (final WriteException e)            {               e.printStackTrace();           }            if (wwb != null)            {                //创建一个可写入的工作表                   //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置                   final WritableSheet ws = wwb.createSheet("sheet1", 0);                   //下面开始添加单元格                   for (int i = 0; i < 10; i++)                {                    for (int j = 0; j < 5; j++)                    {                        //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行                           final Label labelC = new Label(j, i, "这是第" + (i + 1) + "行,第" + (j + 1) + "列", totalFormat);                        try                       {                            //将生成的单元格添加到工作表中                               ws.addCell(labelC);                       }                        catch (final RowsExceededException e)                        {                           e.printStackTrace();                       }                        catch (final WriteException e)                        {                           e.printStackTrace();                       }                     }               }                  try               {                    //把 单元格(column, row)到单元格(column1, row1)进行合并。                    ws.mergeCells(6, 0, 6, 3);                    //从内存中写入文件中                       wwb.write();                    //关闭资源,释放内存                       wwb.close();               }                catch (final IOException e)                {                   e.printStackTrace();               }                catch (final WriteException e)                {                   e.printStackTrace();               }           }       }          /**       * 搜索某一个文件中是否包含某个关键字       *        * @param file       *            待搜索的文件       * @param keyWord       *            要搜索的关键字       * @return       */       public static boolean searchKeyWord(final File file, final String keyWord)        {            boolean res = false;               Workbook wb = null;            try           {                //构造Workbook(工作薄)对象                   wb = Workbook.getWorkbook(file);           }            catch (final BiffException e)            {                return res;            }            catch (final IOException e)            {                return res;            }              if (wb == null) return res;               //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了               final Sheet[] sheet = wb.getSheets();               boolean breakSheet = false;               if (sheet != null && sheet.length > 0)            {                //对每个工作表进行循环                   for (int i = 0; i < sheet.length; i++)                {                    if (breakSheet) break;                       //得到当前工作表的行数                       final int rowNum = sheet[i].getRows();                       boolean breakRow = false;                       for (int j = 0; j < rowNum; j++)                    {                        if (breakRow) break;                        //得到当前行的所有单元格                           final Cell[] cells = sheet[i].getRow(j);                        if (cells != null && cells.length > 0)                        {                            boolean breakCell = false;                            //对每个单元格进行循环                               for (int k = 0; k < cells.length; k++)                            {                                if (breakCell) break;                                //读取当前单元格的值                                   final 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中插入图片       *        * @param dataSheet       *            待插入的工作表       * @param col       *            图片从该列开始       * @param row       *            图片从该行开始       * @param width       *            图片所占的列数       * @param height       *            图片所占的行数       * @param imgFile       *            要插入的图片文件       */       public static void insertImg(   final WritableSheet dataSheet,                                        final int col,                                        final int row,                                        final int width,                                        final int height,                                        final File imgFile)        {            final WritableImage img = new WritableImage(col, row, width, height, imgFile);            dataSheet.addImage(img);       }          /**       * 向Excel中加入页眉页脚       *        * @param dataSheet       *            待加入页眉的工作表       * @param left       * @param center       * @param right       */       public static void setHeader(   final WritableSheet dataSheet,                                        final String left,                                        final String center,                                        final String right)        {            final HeaderFooter hf = new HeaderFooter();            hf.getLeft().append(left);           hf.getCentre().append(center);           hf.getRight().append(right);            //加入页眉               dataSheet.getSettings().setHeader(hf);            //加入页脚               //dataSheet.getSettings().setFooter(hf);           }          //测试        public static void main(final String[] arts)        {              //测试写            ExcelUtils.writeExcel("test.xls");               if (false)            {                //测试插入页眉页脚                try               {                    //创建一个工作薄                       final WritableWorkbook workbook = Workbook.createWorkbook(new File("test.xls"));                    //待插入的工作表                       final WritableSheet dataSheet = workbook.createSheet("加入页眉", 0);                    ExcelUtils.setHeader(dataSheet, "chb", "2007-03-06", "第1页,共3页");                    workbook.write();                   workbook.close();               }                catch (final IOException e)                {                   e.printStackTrace();               }                catch (final WriteException e)                {                   e.printStackTrace();               }           }              if (false)            {                //测试插入图片                try               {                    //创建一个工作薄                       final WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/testxls"));                    //待插入的工作表                       final WritableSheet imgSheet = workbook.createSheet("Images", 0);                    //要插入的图片文件                       final File imgFile = new File("D:/png");                    //图片插入到第二行第一个单元格,长宽各占六个单元格                       insertImg(imgSheet, 0, 1, 6, 6, imgFile);                    workbook.write();                   workbook.close();               }                catch (final IOException e)                {                   e.printStackTrace();               }                catch (final WriteException e)                {                   e.printStackTrace();               }           }         }   }  
转载请注明原文地址: https://www.6miu.com/read-5053807.html

最新回复(0)