java操作Excel

    http://hi.baidu.com/kaixin_2007/item/8afdc214313d3cf9dceecaf0
单元格操作

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 ]);  
        } 

    }

你可能感兴趣的:(Office)