android excel读写

1.先定义一个结构,用来存放单元格的属性。

  

private class CurCell{
		int row;
		int col;
		String content;
	}

 2.定义一个ArrayList用来存放excel中的内容.

  

private ArrayList<CurCell> mArrayList = new ArrayList<MainActivity.CurCell>();

 3.读取excel中的内容(excel的Assets中)。

   

private void ReadExcel(String fileName){
		try {
			InputStream mInputStream = getResources().getAssets().open(fileName);
			Workbook wb = Workbook.getWorkbook(mInputStream); 
			Sheet mSheet = wb.getSheet(0);
			int row = mSheet.getRows();
			int columns = mSheet.getColumns();
			Log.i("W","Total Row: " + row + ", Total Columns: " + columns);
			for(int i= 0 ; i < row ; i ++){
				int cols = mSheet.getRow(i).length;
				for(int j = 0 ; j < cols ; j ++){
					Cell temp = mSheet.getCell(j, i);
					String content = temp.getContents();
					Log.i("W",j + " ," + i + " ," + content);
					CurCell mCell = new CurCell();
					mCell.row = i;
					mCell.col = j;
					mCell.content = content;
					mArrayList.add(mCell);
				}
			}
			wb.close();
			mInputStream.close();
		} catch (BiffException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IndexOutOfBoundsException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

 4.写excel文件。

   

private void WriteExcel(){
		try {
			WritableWorkbook mWorkbook = Workbook.createWorkbook(new File("/mnt/sdcard/test.xls"));
			WritableSheet mSheet = mWorkbook.createSheet("hello", 0);
			WritableSheet mSheet2 = mWorkbook.createSheet("test", 2);
			for(CurCell mCurCell : mArrayList){
				Label mLabel = new Label(mCurCell.col, mCurCell.row, mCurCell.content);
				mSheet.addCell(mLabel);
			}
			int row = mArrayList.get(mArrayList.size() - 1).row;
			int col = mArrayList.get(mArrayList.size() - 1).col;
			jxl.write.Number number = new jxl.write.Number(col,row,55.123);
			mSheet2.addCell(number);
			mWorkbook.write();
			mWorkbook.close();
		} catch (RowsExceededException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (WriteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

 5.更新单元格的内容。

private void UpdateExcel(){
		try {
			Workbook mWorkbook = Workbook.getWorkbook(new File("/mnt/sdcard/test.xls"));
			WritableWorkbook mWritableWorkbook = Workbook.createWorkbook(new File("/mnt/sdcard/test.xls"), mWorkbook);
			WritableSheet mWritableSheet = mWritableWorkbook.getSheet(0);
			WritableCell mWritableCell = mWritableSheet.getWritableCell(1, 0);
			Label mLabel = (Label)mWritableCell;
			mLabel.setString("modify");
			mWritableWorkbook.write();
			mWritableWorkbook.close();
			mWorkbook.close();
		} catch (BiffException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (WriteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

猜你喜欢

转载自bgj.iteye.com/blog/1971439