zoukankan      html  css  js  c++  java
  • Java生成Excel表格

    简单的示范代码如下:

    package xls.test;
    import java.io.File;
    import jxl.Workbook;
    import jxl.write.Label;
    import jxl.write.Number;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    public class XlsExample {
    	public static void main(String[] args) {
    		try {
    			WritableWorkbook book = Workbook.createWorkbook(new File("test.xls"));
                WritableSheet sheet = book.createSheet("sheet0", 0);
    			int col = 0;
                int row = 0;
                sheet.addCell(new Label(col++, row, "语文"));
    			sheet.addCell(new Label(col++, row, "数学"));
    			sheet.addCell(new Label(col++, row, "英语"));
    			sheet.addCell(new Label(col++, row, "物理"));
    			sheet.addCell(new Label(col++, row, "化学"));
    			sheet.addCell(new Label(col++, row, "生物"));
    			for(row = 1;row < 10;){
    				col = 0;
    				sheet.addCell(new Number(col++, row, (int)(Math.random()*100)));
    				sheet.addCell(new Number(col++, row, (int)(Math.random()*100)));
    				sheet.addCell(new Number(col++, row, (int)(Math.random()*100)));
    				sheet.addCell(new Number(col++, row, (int)(Math.random()*100)));
    				sheet.addCell(new Number(col++, row, (int)(Math.random()*100)));
    				sheet.addCell(new Number(col++, row, (int)(Math.random()*100)));
    				row++;
    			}
    			book.write();
                book.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		} 
    	}
    }
    

    运行结果如下:

    语文	数学	英语	物理	化学	生物
    15	3	15	23	12	76
    35	67	59	45	29	76
    30	9	10	49	38	9
    88	27	63	39	20	18
    11	78	28	12	65	68
    30	89	43	28	53	84
    21	55	40	97	78	18
    56	31	74	10	41	86
    13	40	27	54	26	8

    使用的java包:jxl-2.6.12.jar

    这些代码还是可以派上用场的,一个朋友在做日志分析,要将几十个像下面格式日志信息导入到excel中:

    2013-10-20 日志记录
    ========================================
    
    ---------- 00:00:00 ----------
    机器人已经收到命令
    
    ---------- 00:00:04 ----------
    收到机器人起始抓表完成!
    
    ---------- 00:00:11 ----------
    收到机器人命令完成!
    
    ---------- 00:00:12 ----------
    机器人执行从1到1取表位抓到上表位命令成功!
    

    导出的格式如下所示:

    xxxx  00:00:01 00:00:02
    xxxx  00:00:02 00:00:23 10:00:00
    

     下面是示例代码,以后有类似的可以拿来参考一下:

      1 import java.io.BufferedReader;
      2 import java.io.File; 
      3 import java.io.FileInputStream;
      4 import java.io.IOException;
      5 import java.io.InputStreamReader;
      6 import java.util.Map.Entry;
      7 import java.util.regex.Matcher;
      8 import java.util.regex.Pattern;
      9 import java.util.ArrayList;
     10 import java.util.Iterator;
     11 import java.util.Map;
     12 import java.util.List;
     13 import java.util.HashMap;
     14 import java.util.Set;
     15 
     16 import jxl.Workbook; 
     17 import jxl.write.Label; 
     18 import jxl.write.WritableSheet; 
     19 import jxl.write.WritableWorkbook; 
     20 import jxl.write.WriteException;
     21 import jxl.write.biff.RowsExceededException;
     22 public class LogProcess { 
     23     String regx="\\-+ \\d{2}:\\d{2}:\\d{2} \\-+";
     24     Pattern p = Pattern.compile(regx);
     25     public Map<String,List<String>> map = new HashMap<String,List<String>>();
     26     public void processLog(BufferedReader br) throws IOException{
     27         String temp1=null;
     28         temp1=br.readLine();
     29         while(temp1 != null){
     30             Matcher m = p.matcher(temp1);
     31             boolean match = m.matches();
     32             if(match)
     33                 break;
     34             temp1=br.readLine();
     35         }
     36         while(temp1!=null){
     37             Matcher m = p.matcher(temp1);
     38             boolean match = m.matches();
     39             if(!match){
     40                 ;//System.out.println("输入格式不正确!");
     41             }else{
     42                 ;//System.out.println("输入格式正确!"+ temp1);
     43             }
     44             String temp2=br.readLine();
     45             if( temp2 != null && !temp2.isEmpty()){
     46                  if(map.containsKey(temp2)){
     47                      temp1 = temp1.replaceAll("-", "").trim();
     48                      map.get(temp2).add(temp1);
     49                      
     50                  }else{
     51                      List<String> tmpList = new ArrayList<String>();
     52                      temp1 = temp1.replaceAll("-", "").trim();
     53                      tmpList.add(temp1);
     54                      map.put(temp2, tmpList);
     55                  }
     56             }
     57             temp1 = br.readLine();
     58             temp1 = br.readLine();
     59         }
     60     }
     61     public void writeToExcel(String fileName,String path) throws IOException, RowsExceededException, WriteException{
     62         String xlsName = path +  fileName+".xls";
     63         WritableWorkbook book = Workbook.createWorkbook(new File(xlsName)); 
     64         WritableSheet sheet = book.createSheet("sheet0", 0); 
     65         int col = 0; 
     66         int row = 0; 
     67         Set<Map.Entry<String, List<String>>> set = map.entrySet();
     68         Iterator<Entry<String, List<String>>>  it = set.iterator();
     69         while(it.hasNext()){
     70             Map.Entry<String, List<String>> entry = it.next();
     71             String key = entry.getKey();
     72             sheet.addCell(new Label(col, row, key));
     73             col++;
     74             List<String> list = entry.getValue();
     75             StringBuffer bf = new StringBuffer();
     76             System.out.println(key + ":" + bf.toString());
     77         }
     78         Set<Map.Entry<String, List<String>>> set2 = map.entrySet();
     79         Iterator<Entry<String, List<String>>>  it2 = set2.iterator();
     80         col = 0; 
     81         row = 1;
     82         while(it2.hasNext()){
     83             int newrow = 1;
     84             Map.Entry<String, List<String>> entry = it2.next();
     85             String key = entry.getKey();
     86             List<String> list = entry.getValue();
     87             StringBuffer bf = new StringBuffer();
     88             for(int i = 0; i < list.size(); i++){
     89                 bf.append(list.get(i));
     90                 bf.append("\t");
     91                 sheet.addCell(new Label(col, newrow++,list.get(i)));
     92             }
     93             col++;
     94             System.out.println(key + ":" + bf.toString());
     95         }
     96         book.write(); 
     97         book.close(); 
     98     }
     99     public void writeToExcel2(String fileName,String path) throws IOException, RowsExceededException, WriteException{
    100         String xlsName = path +  fileName+".xls";
    101         File file = new File(xlsName);
    102         if(file.exists())
    103             file.delete();
    104         WritableWorkbook book = Workbook.createWorkbook(file); 
    105         WritableSheet sheet = book.createSheet("sheet0", 0); 
    106         int col = 0; 
    107         int row = 0; 
    108         Set<Map.Entry<String, List<String>>> set = map.entrySet();
    109         Iterator<Entry<String, List<String>>>  it = set.iterator();
    110         while(it.hasNext()){
    111             Map.Entry<String, List<String>> entry = it.next();
    112             String key = entry.getKey();
    113             sheet.addCell(new Label(col, row, key));
    114             row++;
    115             List<String> list = entry.getValue();
    116             StringBuffer bf = new StringBuffer();
    117             System.out.println(key + ":" + bf.toString());
    118         }
    119         Set<Map.Entry<String, List<String>>> set2 = map.entrySet();
    120         Iterator<Entry<String, List<String>>>  it2 = set2.iterator();
    121         col = 1; 
    122         row = 0;
    123         while(it2.hasNext()){
    124             int newcol = 1;
    125             Map.Entry<String, List<String>> entry = it2.next();
    126             String key = entry.getKey();
    127             List<String> list = entry.getValue();
    128             StringBuffer bf = new StringBuffer();
    129             for(int i = 0; i < list.size(); i++){
    130                 bf.append(list.get(i));
    131                 bf.append("\t");
    132                 sheet.addCell(new Label(newcol++, row,list.get(i)));
    133             }
    134             row++;
    135             //System.out.println(key + ":" + bf.toString());
    136         }
    137         book.write(); 
    138         book.close(); 
    139     }
    140     public static void main(String[] args) { 
    141         try { 
    142             String path = "E:\\workspace\\log\\";
    143             String outputPath = "E:\\workspace\\excel\\";
    144             File file=new File(path);
    145             File files[] = file.listFiles();
    146             for(int i = 0; i < files.length; i++){
    147                  String fileName = files[i].getName();
    148                  System.out.println(fileName);
    149                  InputStreamReader insReader = new InputStreamReader(new FileInputStream(files[i]),"utf-8");
    150                  BufferedReader br = new BufferedReader(insReader);
    151                  LogProcess logProcess = new LogProcess();
    152                  logProcess.processLog(br);
    153                  try{
    154                      logProcess.writeToExcel2(fileName,outputPath);
    155                  }catch(Exception ex){
    156                      System.out.println("write excel exception.");
    157                      logProcess.writeToExcel(fileName,outputPath);
    158                  }
    159             }
    160         } catch (Exception e) { 
    161             e.printStackTrace(); 
    162         }  
    163     } 
    164 }
    View Code
  • 相关阅读:
    C# WinForm 创建XML文件方法总结
    VB中的ADO数据对象编程详解[转载]
    01.15 10日沙盘Top20分析
    IPad上做开发——在线B/S开发表单
    沙盘选股失败:延迟性与随机性
    IPad上做开发——在线B/S用户定制型通用列表
    IL动态调试.NET 程序(without pdb files)
    IPad上做开发——在线B/S开发主从表
    01.17 10日沙盘Top20分析
    IIS7下配置WCF的netTcpBinding
  • 原文地址:https://www.cnblogs.com/cstar/p/2847796.html
Copyright © 2011-2022 走看看