zoukankan      html  css  js  c++  java
  • Android创建与读取Excel

    主流的操作Excel的有两种方法,一种是通过poi包,另一种是通过jxl包。这里我主要讲解通过jxl包来读写Excel

    首先需要导入一个jxl.jar包。

    下载地址:http://www.andykhan.com/jexcelapi/download.html

    下载后的文件会包含jxl相关的API

    下面直接上代码:

    WriteExcel.java

    复制代码
      1 import java.io.File;
      2 
      3 import java.io.IOException;
      4 
      5 import java.util.Locale;
      6 
      7  
      8 
      9 import jxl.CellView;
     10 
     11 import jxl.Workbook;
     12 
     13 import jxl.WorkbookSettings;
     14 
     15 import jxl.format.UnderlineStyle;
     16 
     17 import jxl.write.Formula;
     18 
     19 import jxl.write.Label;
     20 
     21 import jxl.write.Number;
     22 
     23 import jxl.write.WritableCellFormat;
     24 
     25 import jxl.write.WritableFont;
     26 
     27 import jxl.write.WritableSheet;
     28 
     29 import jxl.write.WritableWorkbook;
     30 
     31 import jxl.write.WriteException;
     32 
     33 import jxl.write.biff.RowsExceededException;
     34 
     35  
     36 
     37 public class WriteExcel {
     38 
     39  
     40 
     41     private WritableCellFormat timesBoldUnderline;
     42 
     43     private WritableCellFormat times;
     44 
     45     private String inputFile;
     46 
     47  
     48 
     49     public void setOutputFile(String inputFile) {
     50 
     51         this.inputFile = inputFile;
     52 
     53     }
     54 
     55  
     56 
     57     public void write() throws IOException, WriteException {
     58 
     59         File file = new File(inputFile);
     60 
     61         WorkbookSettings wbSettings = new WorkbookSettings();
     62 
     63  
     64 
     65         wbSettings.setLocale(new Locale("en", "EN"));
     66 
     67  
     68 
     69         WritableWorkbook workbook = Workbook.createWorkbook(file, wbSettings);
     70 
     71         workbook.createSheet("Report", 0);
     72 
     73         WritableSheet excelSheet = workbook.getSheet(0);
     74 
     75         createLabel(excelSheet);
     76 
     77         createContent(excelSheet);
     78 
     79  
     80 
     81         workbook.write();
     82 
     83         workbook.close();
     84 
     85     }
     86 
     87  
     88 
     89     private void createLabel(WritableSheet sheet)
     90 
     91             throws WriteException {
     92 
     93        
     94 
     95         WritableFont times10pt = new WritableFont(WritableFont.TIMES, 10);
     96 
     97        
     98 
     99         times = new WritableCellFormat(times10pt);
    100 
    101       
    102 
    103         times.setWrap(true);
    104 
    105  
    106 
    107         WritableFont times10ptBoldUnderline = new WritableFont(WritableFont.TIMES, 10, WritableFont.BOLD, false,
    108 
    109                 UnderlineStyle.SINGLE);
    110 
    111         timesBoldUnderline = new WritableCellFormat(times10ptBoldUnderline);
    112 
    113        
    114 
    115         timesBoldUnderline.setWrap(true);
    116 
    117  
    118 
    119         CellView cv = new CellView();
    120 
    121         cv.setFormat(times);
    122 
    123         cv.setFormat(timesBoldUnderline);
    124 
    125         cv.setAutosize(true);
    126 
    127  
    128 
    129        
    130 
    131         addCaption(sheet, 0, 0, "Header 1");
    132 
    133         addCaption(sheet, 1, 0, "This is another header");
    134 
    135  
    136 
    137  
    138 
    139     }
    140 
    141  
    142 
    143     private void createContent(WritableSheet sheet) throws WriteException,
    144 
    145             RowsExceededException {
    146 
    147        
    148 
    149         for (int i = 1; i < 10; i++) {
    150 
    151            
    152 
    153             addNumber(sheet, 0, i, i + 10);
    154 
    155            
    156 
    157             addNumber(sheet, 1, i, i * i);
    158 
    159         }
    160 
    161  
    162 
    163         StringBuffer buf = new StringBuffer();
    164 
    165         buf.append("SUM(A2:A10)");
    166 
    167         Formula f = new Formula(0, 10, buf.toString());
    168 
    169         sheet.addCell(f);
    170 
    171         buf = new StringBuffer();
    172 
    173         buf.append("SUM(B2:B10)");
    174 
    175         f = new Formula(1, 10, buf.toString());
    176 
    177         sheet.addCell(f);
    178 
    179  
    180 
    181         for (int i = 12; i < 20; i++) {
    182 
    183             addLabel(sheet, 0, i, "Boring text " + i);
    184 
    185             addLabel(sheet, 1, i, "Another text");
    186 
    187         }
    188 
    189     }
    190 
    191  
    192 
    193     private void addCaption(WritableSheet sheet, int column, int row, String s)
    194 
    195             throws RowsExceededException, WriteException {
    196 
    197         Label label;
    198 
    199         label = new Label(column, row, s, timesBoldUnderline);
    200 
    201         sheet.addCell(label);
    202 
    203     }
    204 
    205  
    206 
    207     private void addNumber(WritableSheet sheet, int column, int row,
    208 
    209                            Integer integer) throws WriteException, RowsExceededException {
    210 
    211         Number number;
    212 
    213         number = new Number(column, row, integer, times);
    214 
    215         sheet.addCell(number);
    216 
    217     }
    218 
    219  
    220 
    221     private void addLabel(WritableSheet sheet, int column, int row, String s)
    222 
    223             throws WriteException, RowsExceededException {
    224 
    225         Label label;
    226 
    227         label = new Label(column, row, s, times);
    228 
    229         sheet.addCell(label);
    230 
    231     }
    232 
    233  
    234 
    235 }
    复制代码

    ReadExcel.java

    复制代码
     1 import java.io.File;
     2 import java.io.IOException;
     3 
     4 import jxl.Cell;
     5 import jxl.CellType;
     6 import jxl.Sheet;
     7 import jxl.Workbook;
     8 import jxl.read.biff.BiffException;
     9 
    10 public class ReadExcel {
    11     private String inputFile;
    12 
    13     public void setInputFile(String inputFile) {
    14         this.inputFile = inputFile;
    15     }
    16 
    17     public void read() throws IOException  {
    18         File inputWorkbook = new File(inputFile);
    19         Workbook w;
    20         try {
    21             w = Workbook.getWorkbook(inputWorkbook);
    22           
    23             Sheet sheet = w.getSheet(0);
    24 
    25             for (int j = 0; j < sheet.getColumns(); j++) {
    26                 for (int i = 0; i < sheet.getRows(); i++) {
    27                     Cell cell = sheet.getCell(j, i);
    28                     CellType type = cell.getType();
    29                     if (type == CellType.LABEL) {
    30                         System.out.println("I got a label "
    31                                 + cell.getContents());
    32                     }
    33 
    34                     if (type == CellType.NUMBER) {
    35                         System.out.println("I got a number "
    36                                 + cell.getContents());
    37                     }
    38 
    39                 }
    40             }
    41         } catch (BiffException e) {
    42             e.printStackTrace();
    43         }
    44     }
    45 
    46 }
    复制代码

    调运WriteExcel的代码:

    复制代码
     1     WriteExcel writeExcel=new WriteExcel();
     2 
     3     writeExcel.setOutputFile("/sdcard/test.xls");
     4 
     5     try {
     6 
     7         writeExcel.write();
     8 
     9     } catch (IOException e) {
    10 
    11         e.printStackTrace();
    12 
    13     } catch (WriteException e) {
    14 
    15         e.printStackTrace();
    16 
    17     }
    复制代码

        

         执行完WriteExcel后便会在Android虚拟机中生成test.xls文件

    调运ReadExcel的代码:

    复制代码
     1 ReadExcel readExcel=new ReadExcel();
     2 
     3     readExcel.setInputFile("/sdcard/test.xls");
     4 
     5     try {
     6 
     7         readExcel.read();
     8 
     9     } catch (IOException e) {
    10 
    11         e.printStackTrace();
    12 
    13     }
    14 
    15  
    复制代码

     好了,Android读写Excel的功能就能基本实现了。

  • 相关阅读:
    谷歌浏览器network请求时间(stalled,DNS Lookup,Waiting)分析以及解决方案
    Maven项目下启动后Eclipse报错:org.springframework.web.context.ContextLoaderListener
    探讨ES6的import export default 和CommonJS的require module.exports
    Node.js+websocket+mongodb实现即时聊天室
    slider轮播插件的多种写法
    原生canvas写的飞机游戏
    vue父组件如何向子组件中传递数据?
    vue计算属性VS侦听属性
    vue等单页面应用优缺点
    vue自定义过滤器的创建与使用
  • 原文地址:https://www.cnblogs.com/yxx123/p/4886907.html
Copyright © 2011-2022 走看看