如何在Android應(yīng)用中操作Excel文件?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
創(chuàng)新互聯(lián)為客戶提供專業(yè)的
做網(wǎng)站、網(wǎng)站建設(shè)、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開發(fā). 服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站程序開發(fā)、WEB系統(tǒng)開發(fā)、微信二次開發(fā)、
手機(jī)網(wǎng)站制作設(shè)計(jì)等網(wǎng)站方面業(yè)務(wù)。
Android中操作Excel文件導(dǎo)出報(bào)表時(shí)主要采用開源庫(kù)jxl,最早用在java上,但也可用于Android。與之類似的POI,因?yàn)橐蕾噹?kù)眾多,所以只能用于java,而不能用于Android。
使用jxl需要在Android工程中導(dǎo)入jxl.jar包,jxl可以完成Excel的基本讀寫操作,其支持與不支持的情況如下:
1、jxl只支持Excel2003格式,不支持Excel2007格式。即支持xls文件,不支持xlsx文件。
2、jxl不支持直接修改excel文件,但可通過(guò)復(fù)制新文件覆蓋原文件的方式來(lái)間接修改。
3、jxl只能識(shí)別PNG格式的圖片,不能識(shí)別其他格式的圖片。
上面可以看出,jxl不支持Excel2007,這個(gè)很不好,尤其是目前Excel2007已經(jīng)成為Excel主流格式的時(shí)候。不過(guò)現(xiàn)在還有個(gè)實(shí)現(xiàn)Android讀取2007格式的臨時(shí)辦法,如果我們仔細(xì)分析xlsx的文件格式,會(huì)發(fā)現(xiàn)xlsx文件其實(shí)是個(gè)壓縮包,壓縮包里有各種文件,其中數(shù)據(jù)一般是放在"xl/sharedStrings.xml"和"xl/worksheets/sheet1.xml"中。據(jù)此,我們判斷Excel文件為2007格式時(shí),便可以將其解壓,然后從中提取出sharedStrings.xml和sheet1.xml,接著使用XML解析工具把具體數(shù)據(jù)解析出來(lái)。
下面是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頁(yè)的數(shù)目
// 獲得第一個(gè)工作表對(duì)象
Sheet sheet = book.getSheet(0);
int Rows = sheet.getRows();
int Cols = sheet.getColumns();
Log.d(TAG, "當(dāng)前工作表的名字:" + sheet.getName());
Log.d(TAG, "總行數(shù):" + Rows + ", 總列數(shù):" + Cols);
List
看完上述內(nèi)容,你們掌握如何在Android應(yīng)用中操作Excel文件的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
新聞名稱:如何在Android應(yīng)用中操作Excel文件-創(chuàng)新互聯(lián)
文章位置:
http://weahome.cn/article/djjjhs.html