Android中操作Excel文件导出报表时主要采用开源库jxl,最早用在java上,但也可用于Android。与之类似的POI,因为依赖库众多,所以只能用于java,而不能用于Android。
使用jxl需要在Android工程中导入jxl.jar包,jxl可以完成Excel的基本读写操作,其支持与不支持的情况如下:
1、jxl只支持Excel2003格式,不支持Excel2007格式。即支持xls文件,不支持xlsx文件。
2、jxl不支持直接修改excel文件,但可通过复制新文件覆盖原文件的方式来间接修改。
3、jxl只能识别PNG格式的图片,不能识别其他格式的图片。
上面可以看出,jxl不支持Excel2007,这个很不好,尤其是目前Excel2007已经成为Excel主流格式的时候。不过现在还有个实现Android读取2007格式的临时办法,如果我们仔细分析xlsx的文件格式,会发现xlsx文件其实是个压缩包,压缩包里有各种文件,其中数据一般是放在"xl/sharedStrings.xml"和"xl/worksheets/sheet1.xml"中。据此,我们判断Excel文件为2007格式时,便可以将其解压,然后从中提取出sharedStrings.xml和sheet1.xml,接着使用XML解析工具把具体数据解析出来。
下面是Excel文件的读写代码例子,其中支持2003格式的读和写,以及2007格式的读:
import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipException; import java.util.zip.ZipFile; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import android.util.Log; import android.util.Xml; import jxl.Sheet; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; public class ExcelUtil { private final static String TAG = "ExcelUtil"; public static List> read(String file_name) { String extension = file_name.lastIndexOf(".") == -1 ? "" : file_name .substring(file_name.lastIndexOf(".") + 1); if ("xls".equals(extension)) {// 2003 Log.d(TAG, "read2003XLS, extension:" + extension); return read2003XLS(file_name); } else if ("xlsx".equals(extension)) { Log.d(TAG, "read2007XLSX, extension:" + extension); return read2007XLSX(file_name); } else { Log.d(TAG, "不支持的文件类型, extension:" + extension); return null; } } public static List> read2003XLS(String path) { List> dataList = new ArrayList>(); try { Workbook book = Workbook.getWorkbook(new File(path)); // book.getNumberOfSheets(); //获取sheet页的数目 // 获得第一个工作表对象 Sheet sheet = book.getSheet(0); int Rows = sheet.getRows(); int Cols = sheet.getColumns(); Log.d(TAG, "当前工作表的名字:" + sheet.getName()); Log.d(TAG, "总行数:" + Rows + ", 总列数:" + Cols); List
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- Android生成签名文件并用其对apk文件进行签名(Failure [INSTALL_P
- Android布局文件中控件的高度与宽度属性设置
- Android读取assets目录下文件数据内容
- Android工程中R.java文件的重新生成——注意资源文件的错误
- Android内核开发:系统分区与镜像文件的烧写
- 关于Android 动态加载 jar 文件
- Android系统编译―Android.mk文件的简单介绍
- android 工程中重新生成gen文件夹或R.java 文件
- [转载]Android布局文件中命名空间的解析
随机推荐
-
Android广播机制Broadcast详解
-
【Android】对话框之日期和时间对话框
-
Android(安卓)中startActivity 与startAc
-
android 国际化
-
Some Android licenses not accepted. To
-
Ubuntu搭建android编译环境总结
-
Android 使用腾讯TBS遇到的坑
-
android练习一之走马灯效果
-
android——写xml
-
Android 实现两屏幕互相滑动