Android如何在本地创建写入xls文件 150

//读取到excel文件privatevoidcreateExcel(){try{//输出的excel的路径Filefile;StringfilePath=Environ... //读取到excel文件
private void createExcel(){
try{
// 输出的excel的路径
File file;
String filePath = Environment.getExternalStorageDirectory() + "/" + "测试";
file = new File(filePath, "myexcel.xls");
// 创建Excel工作薄
WritableWorkbook wwb;
// 新建立一个jxl文件,生成myexcel.xls
OutputStream os = new FileOutputStream(file);
wwb= Workbook.createWorkbook(os);
//创建一个单元表
WritableSheet sheet = wwb.createSheet("订单", 0);
String[] title = { "订单", "店名", "电话", "地址" };
Label label;
for (int i = 0; i < title.length; i++) {
// Label(x,y,z) 代表单元格的第x+1列,第y+1行, 内容z
// 在Label对象的子对象中指明单元格的位置和内容
label = new Label(i, 0, title[i], getHeader());
// 将定义好的单元格添加到工作表中
sheet.addCell(label);
}
}catch (Exception e) {
e.printStackTrace();
}
}
我这样写有问题吗?为什么只有文件没有内容的??求大佬知会,搞一天没搞明白
展开
 我来答
趣淘网络
2017-09-12
知道答主
回答量:42
采纳率:0%
帮助的人:6.9万
展开全部
1、一般情况下我们会用第三方的jar包来帮助实现,比如 jxl.jar , poi.jar
点击下载开发需要的jar包

2、开发的时候需要注意加上读写权限,尤其在Android 6.0 的时候需要动态去申请读写的权限

[java] view plain copy
<span style="font-size:12px;">if (ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE},
MY_PERMISSIONS_REQUEST);
} else {

saveToExcel.writeToExcel(name,sex,phone,address);
}</span>

权限回调

[java] view plain copy
<span style="font-size:12px;">@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

if (requestCode == MY_PERMISSIONS_REQUEST) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
saveToExcel.writeToExcel(name,sex,phone,address);
} else {
// Permission Denied
Toast.makeText(MainActivity.this, "Permission Denied", Toast.LENGTH_SHORT).show();
}
return;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}</span>

3、指定Excel文件存放的文件夹,并为文件取名

[java] view plain copy
<span style="font-size:12px;">public static String getExcelDir() {
// SD卡指定文件夹
String sdcardPath = Environment.getExternalStorageDirectory()
.toString();
File dir = new File(sdcardPath + File.separator + "Excel"
+ File.separator + "Person");

if (dir.exists()) {
return dir.toString();

} else {
dir.mkdirs();
Log.e("BAG", "保存路径不存在,");
return dir.toString();
}
</span>
在activity 中进行调用 :

String excelPath = getExcelDir()+ File.separator+"demo.xls";

4、将数据存入到Excel表中,在这里写了一个工具类saveToExcel(),具体代码如下

[java] view plain copy
<span style="font-size:12px;"> public class SaveToExcelUtil {
private WritableWorkbook wwb;
private String excelPath;
private File excelFile;
private Activity activity;

public SaveToExcelUtil(Activity activity, String excelPath) {
this.excelPath = excelPath;
this.activity = activity;
excelFile = new File(excelPath);
createExcel(excelFile);

}

// 创建excel表.
public void createExcel(File file) {
WritableSheet ws = null;
try {
if (!file.exists()) {
wwb = Workbook.createWorkbook(file);

ws = wwb.createSheet("sheet1", 0);

// 在指定单元格插入数据
Label lbl1 = new Label(0, 0, "姓名");
Label lbl2 = new Label(1, 0, "性别");
Label lbl3 = new Label(2, 0, "电话");
Label lbl4 = new Label(3, 0, "地址");

ws.addCell(lbl1);
ws.addCell(lbl2);
ws.addCell(lbl3);
ws.addCell(lbl4);

// 从内存中写入文件中
wwb.write();
wwb.close();
}

} catch (Exception e) {
e.printStackTrace();
}
}

//将数据存入到Excel表中
public void writeToExcel(Object... args) {

try {
Workbook oldWwb = Workbook.getWorkbook(excelFile);
wwb = Workbook.createWorkbook(excelFile, oldWwb);
WritableSheet ws = wwb.getSheet(0);
// 当前行数
int row = ws.getRows();
Label lab1 = new Label(0, row, args[0] + "");
Label lab2 = new Label(1, row, args[1] + "");
Label lab3 = new Label(2, row, args[2] + "");
Label lab4 = new Label(3, row, args[3] + "");
ws.addCell(lab1);
ws.addCell(lab2);
ws.addCell(lab3);
ws.addCell(lab4);

// 从内存中写入文件中,只能刷一次.
wwb.write();
wwb.close();
Toast.makeText(activity, "保存成功", Toast.LENGTH_SHORT).show();

} catch (Exception e) {
e.printStackTrace();
}
}
}</span>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式