




下載本文檔
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度診所執(zhí)業(yè)醫(yī)師醫(yī)療風(fēng)險(xiǎn)防控聘用合同
- 二零二五年度手車轉(zhuǎn)讓與綠色出行推廣合同
- 二零二五年度投資分紅股收益分配協(xié)議
- 二零二五年度汽車展覽會(huì)參展商展位電力合同
- 2025年度道路破碎修復(fù)與再生利用合同
- 2025年度青貯收割作業(yè)與農(nóng)業(yè)物聯(lián)網(wǎng)平臺(tái)合作協(xié)議
- 二零二五年度口腔診所醫(yī)生培訓(xùn)與薪酬管理合同
- 二零二五年度商業(yè)秘密保護(hù)與員工保密義務(wù)合同
- 二零二五年度多功能辦公場(chǎng)所租賃服務(wù)協(xié)議
- 2025年度蔬菜大棚承包與品牌授權(quán)合作協(xié)議
- 年產(chǎn)50000噸再生鋁精深加工生產(chǎn)線項(xiàng)目可行性研究報(bào)告
- 華為認(rèn)證 HCIA-Security 安全 H12-711考試題庫(kù)(共800多題)
- 《主人翁精神》課件
- 欽針治療惡心嘔吐
- 第六章質(zhì)量和密度-基礎(chǔ)練(原卷版)
- 《稅收負(fù)擔(dān)對(duì)我國(guó)制造業(yè)資本金融化的影響研究》
- 中學(xué)美術(shù)《剪紙藝術(shù)》完整課件
- 現(xiàn)代家政導(dǎo)論-課件 5.1.3家庭管家
- 適用的法律法規(guī)和其他要求的符合性評(píng)價(jià)
- 中國(guó)古典園林史復(fù)習(xí)
- 東湖高新區(qū)調(diào)研報(bào)告
評(píng)論
0/150
提交評(píng)論