讀取並建立excel文件(.xls)

第三方庫,附件
缺點:該庫只支持.xls文件的操做


一、讀取excel文件

例子:
    
    
    
    
try { /** * 後續考慮問題,好比Excel裏面的圖片以及其餘數據類型的讀取 **/ InputStream is = new FileInputStream(path); Workbook book = Workbook.getWorkbook(is); int num = book.getNumberOfSheets(); publishProgress("the num of sheets is " + num+ "\n"); if (num <2) { return -2; } // 得到第一個工做表對象:時間,電流值 Sheet sheet = book.getSheet(0); int Rows = sheet.getRows(); int Cols = sheet.getColumns(); publishProgress("the name of sheet 1 is " + sheet.getName() + "\n"); publishProgress("total rows is " + Rows + "\n"); publishProgress("total cols is " + Cols + "\n"); if (Cols != 2) { publishProgress("第一個工做表格式錯誤,第一列爲時間(13位時間戳),第二列爲電流值,導入中止"); return -2; } for (int i = 0; i < Rows; i++) { String str1 = sheet.getCell(0,i).getContents(); if (str1 == null || str1.isEmpty() || str1.length()!=13) { continue; } long longStr1 = -1L; try { longStr1 = Long.parseLong(str1); } catch (Exception e) { } String str2 = sheet.getCell(1,i).getContents(); if (str2 == null || str2.isEmpty()) { continue; } float floatStr2 = -2F; try { floatStr2 = Float.parseFloat(str2); } catch (Exception e) { } if (longStr1 == -1 || floatStr2 == -2F) { continue; } publishProgress("contents:" + longStr1+","+ floatStr2 + "\n"); //插入血糖 GlucoseData vData = new GlucoseData(); vData.setGlucoseElecValue(floatStr2); vData.setGlucoseTime(new Date(longStr1)); vData.setGlucoseValue(-1F); vDataDao.insert(vData); } // 得到第二個工做表對象:時間,血糖值 sheet = book.getSheet(1); Rows = sheet.getRows(); Cols = sheet.getColumns(); publishProgress("the name of sheet 2 is " + sheet.getName() + "\n"); publishProgress("total rows is " + Rows + "\n"); publishProgress("total cols is " + Cols + "\n"); if (Cols != 2) { publishProgress("第二個工做表格式錯誤,第一列爲時間(13位時間戳),第二列爲參比血糖值,導入中止"); return -2; } for (int i = 0; i < Rows; i++) { String str1 = sheet.getCell(0,i).getContents(); if (str1 == null || str1.isEmpty() || str1.length()!=13) { continue; } long longStr1 = -1L; try { longStr1 = Long.parseLong(str1); } catch (Exception e) { } String str2 = sheet.getCell(1,i).getContents(); if (str2 == null || str2.isEmpty()) { continue; } float floatStr2 = -2F; try { floatStr2 = Float.parseFloat(str2); } catch (Exception e) { } if (longStr1 == -1 || floatStr2 == -2F) { continue; } publishProgress("contents:" + longStr1+","+ floatStr2 + "\n"); //插入血糖 GlucoseRefData vData = new GlucoseRefData(); vData.setGlucoseRefValue(floatStr2); vData.setGlucoseRefTime(new Date(longStr1)); vGlucoseRefData.insert(vData); } book.close(); publishProgress("完成數據導入\n"); return 0; } catch (Exception e) { publishProgress(e.toString()); return -1; }

二、生成Excel
   
   
   
   
try { // 建立或打開Excel文件 WritableWorkbook book = Workbook.createWorkbook(new File(mResultPath)); // 生成名爲「第一頁」的工做表,參數0表示這是第一頁 WritableSheet sheet1 = book.createSheet("result", 0); List<GlucoseData> vList = vDataDao.loadAll(); if (vList!=null) { for (int i = 0; i < vList.size(); i++) { jxl.write.Number number2 = new jxl.write.Number(0, i,vList.get(i).getGlucoseTime().getTime()); sheet1.addCell(number2); jxl.write.Number number3 = new jxl.write.Number(1, i,vList.get(i).getGlucoseElecValue()); sheet1.addCell(number3); jxl.write.Number number = new jxl.write.Number(2, i,vList.get(i).getGlucoseValue()); sheet1.addCell(number); } } // 寫入數據並關閉文件 book.write(); book.close(); } catch (Exception e) { Log.d("algorithm", "WritableWorkbook exception: "+e.toString()); publishProgress("WritableWorkbook exception: "+e.toString()); return -3; }





附件列表

相關文章
相關標籤/搜索