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的功能就能基本实现了。

时间: 2024-10-13 08:46:01

Android创建与读取Excel的相关文章

C# 创建、读取Excel公式

对于数据量较大的表格,需要计算一些特殊数值时,我们通过运用公式能有效提高我们数据处理的速度和效率,对于后期数据的增删改查等的批量操作也很方便.此外,对于某些数值的信息来源,我们也可以通过读取数据中包含的公式来获取.下面的示例中将分享通过C# 来创建.读取Excel公式的方法. 工具使用 Spire.XLS for .NET 8.0下载安装该类库后,注意在程序中添加引用Spire.Xls.dll(dll文件可在安装路径下的Bin文件夹中获取)代码示例(供参考) [示例1]创建Excel公式 C#

使用Apache下poi创建和读取excel文件

一:使用apache下poi创建excel文档 1 @Test 2 /* 3 * 使用Apache poi创建excel文件 4 */ 5 public void testCreateExcel() { 6 // 1:创建一个excel文档 7 HSSFWorkbook workbook = new HSSFWorkbook(); 8 // 2:创建一个sheet工作表,名为“学生成绩” 9 HSSFSheet sheet = workbook.createSheet("学生成绩");

POI创建和读取excel文件

Poi创建excel文件 所需jar:poi-3.11-20141221.jar  commons-io-2.2.jar public class PoiExpExcel { /**     * POI生成Excel文件     */    public static void main(String[] args) { String[] title = {"id","name","sex"};                //新建工作簿  

C# 创建 写入 读取 excel

public static void CreateExcelFile(string FileName, List<UUser> luu) { if (FileName.Split('.')[FileName.Split('.').Length - 1] == "xlsx")//如果是2007版以后 { //create object Nothing = System.Reflection.Missing.Value; var app = new Excel.Applicat

Android中解析读取复杂word,excel,ppt等的方法

前段时间在尝试做一个Android里的万能播放器,能播放各种格式的软件,其中就涉及到了最常用的office软件.查阅了下资料,发现Android中最传统的直接解析读取word,excel的方法主要用了java里第三方包,比如利用tm-extractors-0.4.jar和jxl.jar等,下面附上代码和效果图. 读取word用了tm-extractors-0.4.jar包,代码如下: package com.example.readword; import java.io.File; impor

java读取Excel文件

package 读取excel; /* *导入jxl包,注意不能读取最新版本的Excel文件 */ import java.io.File;    import java.io.FileInputStream;     import java.io.InputStream;    import jxl.Cell; import jxl.CellType;    import jxl.Sheet;    import jxl.Workbook;    import jxl.write.Label;

查找网上关于C++读取Excel表格资料后的心得

使用微软提供的自带COM组件来读Excel 一.读取Excel文件COM类的相关环境的搭建: 1.首先新建一个MFC对话框工程,可命名为ReadWriteExcel 2.在添加类选项中, 选择MFC From Typelib,如下图: 3.再找到对应Office版本下的Excel.exe所在文件目录,并打开Excel.exe, C:\Program Files\Microsoft Office\Office15\EXCEL.EXE 4.将6个Interfaces中的接口添加到右边的生成类Gene

C#读取Excel技术概览

参考文章 C#读取Excel的五种方式体会 1. OleDb 用这种方法读取Excel速度还是非常的快的,但这种方式读取数据的时候不太灵活.不过可以在 DataTable 中对数据进行一些删减.修改.这种方式将Excel作为一个数据源,直接用Sql语句获取数据了.所以读取之前要知道此次要读取的Sheet(当然也可以用序号,类似dt.Row[0][0].这样倒是不需要知道Sheet). if (fileType == ".xls") connStr = "Provider=Mi

C#读取Excel技术概览 (2)

5.自定义SDK,使用xmlReader文件流式处理 第四章节中,总是感觉用别人的工具要受制于人.既然我 们知道了Excel的存储方式,问题便转换成从xml中取出数据,然后放入内存得到我们想要的东西,更重要的是,官方的sdk对xml的读取采用的 Document的方式,对于大文件xml执行速度必然降低,同时对 内存,数据量都有限制,若有几十亿,好几百T的数据,这种处理方式就很难发挥作用了,所以我们决定自己做一个sdk出来,只是将原来读取xml的方式,改 为用xmlReader的方式来读取,采用文