【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android開發(fā)中如何生成excel_第1頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android開發(fā)中如何生成excel_第2頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android開發(fā)中如何生成excel_第3頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android開發(fā)中如何生成excel_第4頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android開發(fā)中如何生成excel_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android開發(fā)中如何生成excel

這篇文章主要介紹了Android開發(fā)中如何生成excel,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓在下帶著大家一起了解一下。在android中生成excel表并存到本地。先看下生成后的效果圖:初始化數(shù)據(jù)首先我們要先造下測(cè)試數(shù)據(jù),這里我把數(shù)據(jù)寫死在一個(gè)常量類Const中,如下:public

class

Const

{

public

interface

OrderInfo{

public

static

final

String[][]

orderOne

=

new

String[][]

{{

"123",

"九龍",

,

"武漢市關(guān)山口"

},{

"124",

"咱家",

,

"武漢市水果湖"

},{

"125",

"陳家",

,

"武漢市華師"

},{

"126",

"李",

,

"武漢市楊家灣"

}};

}

}理論上這些數(shù)據(jù)是從后臺(tái)讀過來(lái)的。本文模擬打印訂單的信息,所以這里還需要一個(gè)訂單Model類:public

class

Order

implements

Serializable

{

public

String

id;

public

String

restPhone;

public

String

restName;

public

String

receiverAddr;

public

Order(String

id,String

restPhone,

String

restName,

String

receiverAddr)

{

this.id

=

id;

this.restPhone

=

restPhone;

this.restName

=

restName;

this.receiverAddr

=

receiverAddr;

}

}存內(nèi)存卡接下來(lái)我們要判斷一下內(nèi)存卡是否存在,內(nèi)存是否足夠大。先獲取指定目錄下內(nèi)存的大小:/**

獲取SD可用容量

*/

private

static

long

getAvailableStorage(Context

context)

{

String

root

=

context.getExternalFilesDir(null).getPath();

StatFs

statFs

=

new

StatFs(root);

long

blockSize

=

statFs.getBlockSize();

long

availableBlocks

=

statFs.getAvailableBlocks();

long

availableSize

=

blockSize

*

availableBlocks;

//

Formatter.formatFileSize(context,

availableSize);

return

availableSize;

}這里用到的路徑是getExternalFilesDir,它指定的是SDCard/Android/data/你的應(yīng)用的包名/files/目錄這個(gè)目錄,它用來(lái)放一些長(zhǎng)時(shí)間保存的數(shù)據(jù),當(dāng)應(yīng)用被卸載時(shí),會(huì)同時(shí)會(huì)刪除。類似這種情況的還有g(shù)etExternalCacheDir方法,只是它一般用來(lái)存放臨時(shí)文件。之后通過StatFs來(lái)計(jì)算出可用容量的大小。接下來(lái)在寫入excel前對(duì)內(nèi)存進(jìn)行判斷,如下:if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)&&getAvailableStorage()>1000000)

{

Toast.makeText(context,

"SD卡不可用",

Toast.LENGTH_LONG).show();

return;

}

File

file;

File

dir

=

new

File(context.getExternalFilesDir(null).getPath());

file

=

new

File(dir,

fileName

+

".xls");

if

(!dir.exists())

{

dir.mkdirs();

}如果內(nèi)存卡不存在或內(nèi)存小于1M,不進(jìn)行寫入,然后創(chuàng)建相應(yīng)的文件夾并起名字。接下來(lái)重點(diǎn)看下如何寫入excel。生成寫入excel導(dǎo)入相關(guān)包這里需要導(dǎo)入jxl包,它主要就是用于處理excel的,這個(gè)包我會(huì)附在項(xiàng)目放在github中,后面會(huì)給出鏈接。生成excel工作表以下代碼是在指定路徑下生成excel表,此時(shí)只是一個(gè)空表。WritableWorkbook

wwb;

OutputStream

os

=

new

FileOutputStream(file);

wwb

=

Workbook.createWorkbook(os);添加shee表熟悉excel操作的都知道excel可以新建很多個(gè)sheet表。以下代碼生成第一個(gè)工作表,名字為“訂單”:WritableSheet

sheet

=

wwb.createSheet("訂單",

0);添加excel表頭添加excel的表頭,這里可以自定義表頭的樣式,先看代碼:String[]

title

=

{

"訂單",

"店名",

"電話",

"地址"

};

Label

label;

for

(int

i

=

0;

i

<

title.length;

i++)

{

//

Label(x,y,z)

代表單元格的第x+1列,第y+1行,

內(nèi)容z

//

在Label對(duì)象的子對(duì)象中指明單元格的位置和內(nèi)容

label

=

new

Label(i,

0,

title[i],

getHeader());

//

將定義好的單元格添加到工作表中

sheet.addCell(label);

}這里表頭信息我寫死了。表的一個(gè)單元格對(duì)應(yīng)一個(gè)Label,如label(0,0,”a”)代表第一行第一列所在的單元格信息為a。getHeader()是自定義的樣式,它返回一個(gè)WritableCellFormat。來(lái)看看如何自定義樣式:public

static

WritableCellFormat

getHeader()

{

WritableFont

font

=

new

WritableFont(WritableFont.TIMES,

10,

WritableFont.BOLD);//

定義字體

try

{

font.setColour(Colour.BLUE);//

藍(lán)色字體

}

catch

(WriteException

e1)

{

e1.printStackTrace();

}

WritableCellFormat

format

=

new

WritableCellFormat(font);

try

{

format.setAlignment(jxl.format.Alignment.CENTRE);//

左右居中

format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//

上下居中

format.setBorder(Border.ALL,

BorderLineStyle.THIN,

Colour.BLACK);//

黑色邊框

format.setBackground(Colour.YELLOW);//

黃色背景

}

catch

(WriteException

e)

{

e.printStackTrace();

}

return

format;

}看上面代碼就很清楚了,通過獲得WritableFont來(lái)自定義字體的一些樣式,如顏色大小等,通過WritableCellFormat來(lái)設(shè)置文本框的樣式,可以設(shè)置邊框底色等。具體的可以查api文檔,這里只給出例子。添加excel內(nèi)容for

(int

i

=

0;

i

<

exportOrder.size();

i++)

{

Order

order

=

exportOrder.get(i);

Label

orderNum

=

new

Label(0,

i

+

1,

order.id);

Label

restaurant

=

new

Label(1,

i

+

1,

order.restName);

Label

nameLabel

=

new

Label(2,i+1,order.restPhone);

Label

address

=

new

Label(3,

i

+

1,

order.receiverAddr);

sheet.addCell(orderNum);

sheet.addCell(restaurant);

sheet.addCell(nameLabel);

sheet.addCell(address);

Toast.makeText(context,

"寫入成功",

Toast.LENGTH_LONG).show();

}這就再簡(jiǎn)單不過了,就是獲取order信息然后一個(gè)個(gè)寫入。主類這個(gè)demo布局很簡(jiǎn)單就是一個(gè)按鈕點(diǎn)擊來(lái)生成excel,這里就不貼出來(lái)了,MainActivity的代碼如下:protected

void

onCreate(Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

int

length

=

Const.OrderInfo.orderOne.length;

for(int

i

=

0;i

<

length;i++){

Order

order

=

new

Order(

Const.OrderInfo.orderOne[i][0],

Const.OrderInfo.orderOne[i][1],

Const.OrderInfo.orderOne[i][2],

Const.OrderInfo.orderOne[i][3]);

orders.add(order);

}

btn

=

(Button)super.findViewById(R.id.btn);

btn.setOnClickListener(new

OnClickListener()

{

@Override

public

void

onClick(View

v)

{

//

TODO

Auto-generated

method

stub

try

{

ExcelUtil.writeExcel(MainActivity.this,

orders,

"excel_"+new

Date().toSt

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論