jxl

使用 jxl.jar 包

 

单元格操作

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

1、 合并单元格

Java代码
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 );   
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、 行高和列宽

Java代码
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 );   
    
   
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,需要知道它有多少行和多少列,如下操作:

Java代码
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( " \t " );   
           }    
           System.out.println();   
       }    
       book.close();   
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( " \t " );
            }
            System.out.println();
        }
        book.close();

下面是一个完成代码

import  jxl.*;  
import  jxl.write.*;  
import  java.io.*;

public static void main(String[] args){
        String targetfile = "d:/out.xls " ; //输出的excel文件名   
        String worksheet = "List" ; //输出的excel文件工作表名   
        String[] title = {"ID\012ID2" , "NAME" , "DESCRIB" }; //excel工作表的标题   
        WritableWorkbook workbook;  
        try   
        {  
            //创建可写入的Excel工作薄,运行生成的文件在tomcat/bin下   
            //workbook = Workbook.createWorkbook(new File("output.xls"));    
            System.out.println("begin" );  
            
            OutputStream os = new FileOutputStream(targetfile);   
            workbook = Workbook.createWorkbook(os);   
            WritableSheet sheet = workbook.createSheet(worksheet, 0 );  //添加第一个工作表   
            //WritableSheet sheet1 = workbook.createSheet("MySheet1", 1); //可添加第二个工作   
            /*
            jxl.write.Label label = new jxl.write.Label(0, 2, "A label record"); //put a label in cell A3, Label(column,row)  
            sheet.addCell(label);   
            */
            jxl.write.Label label;  
            for( int  i= 0 ; i< title.length; i++){  
                //Label(列号,行号 ,内容 )
                label = new jxl.write.Label(i,  0 , title[i]);  //put the title in row1    
                sheet.addCell(label);   
            }  
            
            
            WritableCellFormat wrappedText = new WritableCellFormat(WritableWorkbook.ARIAL_10_PT);
            wrappedText.setWrap(true);// 可换行的label样式
            Label label2 = new Label(4, 0, "测试再长一点了呵呵,\012测试。。。", wrappedText); // "\012"强制换行
            sheet.addCell(label2);
        
            
            //下列添加的对字体等的设置均调试通过,可作参考用   
            
            //添加数字    
            jxl.write.Number number = new  jxl.write.Number( 3 ,  4 ,  3.14159 );  //put the number 3.14159 in cell D5   
            sheet.addCell(number);  
            
            //添加带有字型Formatting的对象    
            jxl.write.WritableFont wf = new  jxl.write.WritableFont(WritableFont.TIMES, 10 ,WritableFont.BOLD, true );   
            jxl.write.WritableCellFormat wcfF = new  jxl.write.WritableCellFormat(wf);   
            jxl.write.Label labelCF = new  jxl.write.Label( 4 , 4 , "文本" ,wcfF);   
            sheet.addCell(labelCF);   
            
            //添加带有字体颜色,带背景颜色 Formatting的对象    
            jxl.write.WritableFont wfc = new  jxl.write.WritableFont(WritableFont.ARIAL, 10 ,WritableFont.BOLD, false ,jxl.format.UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);   
            jxl.write.WritableCellFormat wcfFC = new  jxl.write.WritableCellFormat(wfc);   
            wcfFC.setBackground(jxl.format.Colour.BLUE);  
            jxl.write.Label labelCFC = new  jxl.write.Label( 1 , 5 , "带颜色" ,wcfFC);   
            sheet.addCell(labelCFC);   
            
            //添加带有formatting的Number对象     
            jxl.write.NumberFormat nf = new  jxl.write.NumberFormat( "#.##" );   
            jxl.write.WritableCellFormat wcfN = new  jxl.write.WritableCellFormat(nf);   
            jxl.write.Number labelNF = new  jxl.write.Number( 1 , 1 , 3.1415926 ,wcfN);   
            sheet.addCell(labelNF);   
            
            //3.添加Boolean对象    
            jxl.write.Boolean labelB = new  jxl.write.Boolean( 0 , 2 , false );   
            sheet.addCell(labelB);   
            
            //4.添加DateTime对象    
            jxl.write.DateTime labelDT = new  jxl.write.DateTime( 0 , 3 , new  java.util.Date());   
            sheet.addCell(labelDT);   
            
            //添加带有formatting的DateFormat对象    
            jxl.write.DateFormat df = new  jxl.write.DateFormat( "ddMMyyyyhh:mm:ss" );   
            jxl.write.WritableCellFormat wcfDF = new  jxl.write.WritableCellFormat(df);   
            jxl.write.DateTime labelDTF = new  jxl.write.DateTime( 1 , 3 , new  java.util.Date(),wcfDF);   
            sheet.addCell(labelDTF);   
            
            //和宾单元格   
            //sheet.mergeCells(int col1,int row1,int col2,int row2);//左上角到右下角   
            sheet.mergeCells(4 , 5 , 8 , 10 ); //左上角到右下角   
            wfc = new jxl.write.WritableFont(WritableFont.ARIAL, 40 ,WritableFont.BOLD, false ,jxl.format.UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.GREEN);   
            jxl.write.WritableCellFormat wchB = new jxl.write.WritableCellFormat(wfc);   
            wchB.setAlignment(jxl.format.Alignment.CENTRE);  
            labelCFC = new  jxl.write.Label( 4 , 5 , "单元合并" ,wchB);   
            sheet.addCell(labelCFC); //   
            
            
            //设置边框   
            jxl.write.WritableCellFormat wcsB = new  jxl.write.WritableCellFormat();   
            wcsB.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THICK);  
            labelCFC = new  jxl.write.Label( 0 , 6 , "边框设置" ,wcsB);   
            sheet.addCell(labelCFC);   
            workbook.write();   
            workbook.close();  
        }catch (Exception e)   
        {   
            e.printStackTrace();   
        }   
        System.out.println("end" );  
        Runtime r = Runtime.getRuntime();   
        Process p = null ;   
        //String cmd[]={"notepad","exec.java"};     
        String cmd[] = {"C:\\Program Files\\Microsoft Office\\Office\\EXCEL.EXE" , "out.xls" };   
        try {   
            p = r.exec(cmd);   
        }   
        catch (Exception e){   
            System.out.println("error executing: " +cmd[ 0 ]);   
        }  

    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值