zoukankan      html  css  js  c++  java
  • java对excel表格的操作

    拟生成一个名为“test.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下:

    public static void main(String[]args){

               try{

              

                  WritableWorkbook  book=Workbook.createWorkbook(new File("test.file");

                 // 生成名为“第一页”的工作表,参数0表示这是第一页

                 WritableSheet  sheet=book.createSheet("第一页",0);

                // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)

                // 以及单元格内容为test
        Label label=new Label(0,0,"test");
      / /将定义好的单元格添加到工作表中
         sheet.addCell(label);
     /*
                 * 生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为789.123
                 */
    jx1.write.Number number=new jx1.write.Number(1,0,555.12541);
    sheet.addCell(number);
    //写入数据并关闭文件
    book.write();
    book.close();
    }catch(Exception e){
             System.out.println(e);
           }
    }
    }
    //////读取文件
    public class  ReadExcel{
              public static void main(String[]args){
                           try{
                                Workbook  book=Workbook.getWorkbook(new File("test.xls"));
                                //获取第一个工作表
                                Sheet sheet=book.getSheet(0);
                               //得到第一行第一列的表格
                               Cell cell=sheet.getCell(0,0);
                                String result=cell.getContents();
                               System.out.println(result);
                             book.close();
                          }
                           catch(Exception e){
                                     System.out.println(e);
                               }
                   }
    }
    /////////修改文件
    public class UpdateExcel{
                  public static void main(String[]args){
                               try{
                                        //从Excel获得文件
                                         Workbook wb=Workbook.getWorkbook(new File("test.xls"));
                                        //打开一个副本,将文件指定到原文件
                                        WritableWorkbook book=Workbook.createWorkbook(new File("test.xls"),wb);
                                       //添加一个工作表
                                        WritableSheet sheet=book.createSheet("第二页",1);
                                        sheet.addCell(new Label(0,0,"第二页测试数据"));
                                       book.write();
                                       book.close();
                                      }catch(Exception e){
                                         System.out.println(e);
                                       }
     }
    }
    一、 数据格式化
    在Excel中不涉及复杂的数据类型,能够比较好的处理字串、数字和日期已经能够满足一般的应用

    1、 字串格式化

    字符串的格式化涉及到的是字体、粗细、字号等元素,这些功能主要由WritableFont和
    WritableCellFormat类来负责。假设我们在生成一个含有字串的单元格时,使用如下语句:
    WritableFont font1=new WritableFont(WritableFont.TIMES,16,WritableFont.BOLD); ①
     
    WritableCellFormat format1=new WritableCellFormat(font1); ②
     
    Label label=new Label(0,0,”data 4 test”,format1) ③

    其中①指定了字串格式:字体为TIMES,字号16,加粗显示。WritableFont有非常丰富的
    构造子,供不同情况下使用,jExcelAPI的java-doc中有详细列表,这里不再列出。

    ②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种
    属性,后面的单元格格式化中会有更多描述。

    ③处使用了Label类的构造子,指定了字串被赋予那种格式。

    在WritableCellFormat类中,还有一个很重要的方法是指定数据的对齐方式,比如针对我们
    上面的实例,可以指定:

     
    1
    2
    3
    4
    5
    //把水平对齐方式指定为居中
    format1.setAlignment(jxl.format.Alignment.CENTRE);
     
    //把垂直对齐方式指定为居中
    format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
     
                                     
       

    二、单元格操作

    Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI
    提供了这些支持。这些操作相对比较简单,下面只介绍一下相关的API。

    1:合并单元格

    WritableSheet.mergeCells(int m,int n,int p,int q);
     
    //作用是从(m,n)到(p,q)的单元格全部合并,比如:
    WritableSheet sheet=book.createSheet(“第一页”,0);
     
    //合并第一列第一行到第六列第一行的所有单元格
    sheet.mergeCells(0,0,5,0);
    合并既可以是横向的,也可以是纵向的。合并后的单元格不能再次进行合并,否则会触发异常。
     
     
    2:行高和列宽
    WritableSheet.setRowView(int i,int height);
    //作用是指定第i+1行的高度,比如:
    //将第一行的高度设为200
    sheet.setRowView(0,200);
    WritableSheet.setColumnView(int i,int width);
    //作用是指定第i+1列的宽度,比如:
    //将第一列的宽度设为30
    sheet.setColumnView(0,30);
    三、 jExcelAPI还有其他的一些功能,比如插入图片等,这里就不再一一介绍,读者可以自己探索。
    其中:如果读一个excel,需要知道它有多少行和多少列,如下操作:
    Workbook book = Workbook.getWorkbook(new File("测试1.xls"));
            // 获得第一个工作表对象
            Sheet sheet = book.getSheet(0);
            // 得到第一列第一行的单元格
            int columnum = sheet.getColumns();// 得到列数
            int rownum = sheet.getRows();// 得到行数
            System.out.println(columnum);
            System.out.println(rownum);
            for (int i = 0; i < rownum; i++)// 循环进行读写
            {
                for (int j = 0; j < columnum; j++) {
                    Cell cell1 = sheet.getCell(j, i);
                    String result = cell1.getContents();
                    System.out.print(result);
                    System.out.print(" ");
                }
                System.out.println();
            }
            book.close();
     
       
  • 相关阅读:
    一、常用命令
    八、继承和聚合
    六、生命周期
    七、创建Web工程以及插件原理
    pl/sql developer学习总结
    Oracle创建用户及授权
    Oracle客户端安装
    oracle INS-13001 客户端安装-环境不满足最低要求
    ORA-28001: the password has expired密码过期
    ORA-28000--ORACLE用户被锁
  • 原文地址:https://www.cnblogs.com/zhouzetian/p/8313541.html
Copyright © 2011-2022 走看看