excel 操作

import java.awt.List;
import java.io.*;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;

import jxl.Cell;
import jxl.CellType;
import jxl.DateCell;
import jxl.LabelCell;
import jxl.NumberCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;


public class Test7 {
	public static void main(String args[]) throws BiffException, IOException {
		int C;
		ArrayList<ArrayList<String>> dd = new ArrayList<ArrayList<String>>();
		for(int i=1;i<=20;i++){
		DateRandomTest bb = new DateRandomTest();
	    Date randomDate = bb.randomDate("2009-01-01", "2012-08-31");
	    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
	    ArrayList<ArrayList<String>> aa = readExcel("d:/lwg/Mzhi/joint-hardware-inventory-service-request-"+sdf.format(randomDate)+".xls");
	    dd.addAll(aa);
	    }
		 C=(int) (Math.random()*100);
		 writeExcel("d:/xls/aa"+ +C +".xls", dd);
	}
	
	
	  /**把数组内容写到Excel文件,写到本地文件中   
     * @param data  包含行列的数组   
     * @return  字节数组 
     * @author yaofuyuan 
     * @createTime 2012-04-28 16:00 
     */  
    public static void writeExcel(String filname,ArrayList<ArrayList<String>> data){     
        WritableWorkbook wwb = null;     
        try {     
            //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象     
            wwb =Workbook.createWorkbook(new File(filname));     
        } catch (IOException e) {     
            e.printStackTrace();     
        }     
        if(wwb!=null){     
            //创建一个可写入的工作表     
            //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置     
            WritableSheet ws = wwb.createSheet("sheet1", 0);     
                 
            //下面开始添加单元格     
            for(int i=0,rowLen=data.size();i<rowLen;i++){     
                ArrayList<String> row=data.get(i);  
                for(int j=0,colLen=row.size();j<colLen;j++){     
                    //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行     
                    Label labelC = new Label(j, i, row.get(j));   

                    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();     
            }     
        }     
    } 
    
    
    
    
	private static Object row(String string) {
		// TODO Auto-generated method stub
		return null;
	}


	/*
	
	*//**生成一个Excel文件
     * @param fileName  要生成的Excel文件名
     *//*
     public static void writeExcel1(String fileName,String filele){
        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;i<10;i++){
                 for(int j=0;j<5;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();
            }
        }
    } 
	
	*/
	
	
	
	
	
	
	
	
 /*   public static String readExcel(String file){
        StringBuffer sb = new StringBuffer();
        
        Workbook wb = null;
         try {
            //构造Workbook(工作薄)对象
            wb=Workbook.getWorkbook(new File(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<sheet.length;i++){
                //得到当前工作表的行数
                int rowNum = sheet[i].getRows();
                 for(int j=0;j<rowNum;j++){
                    //得到当前行的所有单元格
                    Cell[] cells = sheet[i].getRow(j);
                     if(cells!=null&&cells.length>0){
                        //对每个单元格进行循环
                         for(int k=0;k<cells.length;k++){
                            //读取当前单元格的值
                            String cellValue = cells[k].getContents();
                            sb.append(cellValue+" ");
                        }
                    }
                    sb.append(" ");
                }
                sb.append(" ");
            }
        }
        //最后关闭资源,释放内存
        wb.close();
        return sb.toString();
    }
    */
    
    /**读取Excel文件的内容   
     * @param file  待读取的文件   
     * @return  ArrayList<ArrayList<String>> 包括excel里的第一个工作簿的所有行列 
     * @author yaofuyuan 
     * @createTime 2012-04-28 16:00 
     */    
    public static ArrayList<ArrayList<String>> readExcel(String fileName){     
        ArrayList<ArrayList<String>> data=new  ArrayList<ArrayList<String>>();      
        Workbook wb = null;     
        try {     
            //构造Workbook(工作薄)对象     
            wb=Workbook.getWorkbook(new File(fileName));     
        } catch (BiffException e) {     
            e.printStackTrace();     
        } catch (IOException e) {     
            e.printStackTrace();     
        }        
        if(wb==null)     
            return data;     
             
        //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了     
        Sheet[] sheet = wb.getSheets();     
        if(sheet!=null&&sheet.length>0){     
            Sheet sheet0=sheet[0];  
            //得到当前工作表的行数    
            int rowNum = sheet0.getRows();   
            for(int i=0;i<rowNum;i++){  
                //得到当前行的所有单元格     
                Cell[] cells = sheet0.getRow(i);  
                ArrayList<String> row=new ArrayList<String>();  
                 if(cells!=null&&cells.length>0){  
                     int cellNum=cells.length;  
                    //对每个单元格进行循环   
                     for(int j=0;j< cellNum;j++){  
                        //读取当前单元格的值  
                         Cell c=cells[j];  
                         String cellValue = cells[j].getContents();  
                         if(!cellValue.trim().equals("7979")){
//                        	 Interger.valueOf(value.trim)==7979

                         if(c.getType() == CellType.LABEL)  
                         {  
                             LabelCell labelc00 = (LabelCell)c;  
                             cellValue = labelc00.getString();  
                         }else  
                         if(c.getType() == CellType.NUMBER)  
                         {  
                             NumberCell numc10 = (NumberCell)c;  
                             cellValue = getFormatNumber(numc10.getValue());  
                         }else  
                         if(c.getType() == CellType.DATE)  
                         {  
                             DateCell datec11 = (DateCell)c;  
                             cellValue = getFormatTime(datec11.getDate());  
                         }  
                           
                         row.add(cellValue);  
                     } 
                     }
                 }   
                 data.add(row);  
            }     
             
        }     
        //最后关闭资源,释放内存     
        wb.close();     
        return data;     
    }    
    
    
    
    
    public static String getFormatNumber(double n) {  
        DecimalFormat df = new DecimalFormat("#.##########");  
        return df.format(n);  
    }  
    public static String getFormatTime(Date logtime) {  
        if (null == logtime) {  
            logtime = new Date();  
        }  
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
        String time = "";  
        try {  
            time = sdf.format(logtime);  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
          
        return time;  
    }  
    
    
    
    
    
    
    
    
    
    
    
    
    public class Excel {
        public Excel() {
        }
        public void CreateWorkbook(File file, double[] a) {
            try {
                if (!file.exists()) { //判断文件是否已存在,如果没有存在则创建新文件
                    jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new
                            File("result.xls"+1));
                    jxl.write.WritableSheet ws = wwb.createSheet("Test Sheet 1", 0);
                    int i = 0;
                    ws.setColumnView(0, 20); //设置列宽
                    jxl.write.NumberFormat nf = new jxl.write.NumberFormat(
                            "0.0000000000000000"); //定义数值格式
                    WritableCellFormat wcfN = new WritableCellFormat(nf);
                    String str2 = "第" + 1 + "次试验";
                    Label label = new Label(0, 0, str2);
                    ws.addCell(label);
                    while (i < a.length) {
                        jxl.write.Number num = new jxl.write.Number(0, i + 1,
                                a[i], wcfN);
                        ws.addCell(num);
                        i++;
                    }
                    //写入Exel工作表
                    wwb.write();
                    //关闭Excel工作薄对象
                    wwb.close();
                } else {
                    Workbook rwb = Workbook.getWorkbook(file);
                    File tempfile = new File(System.getProperty("user.dir") +
                                             "\\tempfile.xls");
                    WritableWorkbook wwb = Workbook.createWorkbook(tempfile, rwb);
                    WritableSheet ws = wwb.getSheet(0);
                    int num = rwb.getSheet(0).getColumns();
                    int num1 = num + 1;
                    ws.setColumnView(num, 20); //设置列宽
                    String str2 = "第" + num1 + "次试验"; //添加列名
                    Label label = new Label(num, 0, str2);
                    ws.addCell(label);
                    int i = 0;
                    jxl.write.NumberFormat nf = new jxl.write.NumberFormat(
                            "0.000000000000000"); //定义数值格式
                    WritableCellFormat wcfN = new WritableCellFormat(nf);
                    while (i < a.length) {
                        jxl.write.Number number = new jxl.write.Number(num,
                                i + 1,
                                a[i], wcfN);
                        ws.addCell(number);
                        i++;
                    }
                    wwb.write();
                    wwb.close();
                    rwb.close();
                    String filename = file.getPath();
                    System.out.println("filename:" + filename);
                    file.delete();
                    tempfile.renameTo(file);
                    System.out.println("tempfile:" + tempfile.getPath());
                    System.out.println(tempfile.exists());
                    System.out.println(file.exists());
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    
    
    
    
    
    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值