如何在Android应用中操作Excel文件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
创新互联为客户提供专业的
做网站、网站建设、程序、域名、空间一条龙服务,提供基于WEB的系统开发. 服务项目涵盖了网页设计、网站程序开发、WEB系统开发、微信二次开发、
手机网站制作设计等网站方面业务。
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应用中操作Excel文件的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
网页标题:如何在Android应用中操作Excel文件-创新互联
本文来源:
http://shouzuofang.com/article/djjjhs.html