android - 如何在android中创建一个excel文件?

标签 android excel

我必须以编程方式创建一个 excel 文件。有没有创建excel文件的API或者其他方法?
2011 年 11 月 7 日编辑
我尝试了示例从此链接创建 Excel 电子表格 Create an Excel spredsheet
我在 workbook.write(); 得到 NullPointerException,使用它我可以在 SD 卡上创建 excel 文件,但是当我使用 MS office 2007 打开该 excel 文件时,我得到 无法读取文件消息
这里是堆栈跟踪,ExcelStudy 是我使用 WriteExcel 类的 Activity

W/System.err(  235): java.lang.NullPointerException
W/System.err(  235):    at jxl.biff.StringHelper.getUnicodeBytes(StringHelper.java:133)
W/System.err(  235):    at jxl.biff.FontRecord.getData(FontRecord.java:289)
W/System.err(  235):    at jxl.biff.WritableRecordData.getBytes(WritableRecordData.java:71)
W/System.err(  235):    at jxl.write.biff.File.write(File.java:132)
W/System.err(  235):    at jxl.biff.Fonts.write(Fonts.java:110)
W/System.err(  235):    at jxl.write.biff.WritableWorkbookImpl.write(WritableWorkbookImpl.java:699)
W/System.err(  235):    at comm.study.code.WriteExcel.write(WriteExcel.java:49)
W/System.err(  235):    at comm.study.code.ExcelStudy.createExcelFile(ExcelStudy.java:64)
W/System.err(  235):    at comm.study.code.ExcelStudy$1.onClick(ExcelStudy.java:47)
W/System.err(  235):    at android.view.View.performClick(View.java:2364)
W/System.err(  235):    at android.view.View.onTouchEvent(View.java:4179)
W/System.err(  235):    at android.widget.TextView.onTouchEvent(TextView.java:6541)
W/System.err(  235):    at android.view.View.dispatchTouchEvent(View.java:3709)
W/System.err(  235):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
W/System.err(  235):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
W/System.err(  235):    at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
W/System.err(  235):    at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
W/System.err(  235):    at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
W/System.err(  235):    at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
W/System.err(  235):    at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
W/System.err(  235):    at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
W/System.err(  235):    at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err(  235):    at android.os.Looper.loop(Looper.java:123)
W/System.err(  235):    at android.app.ActivityThread.main(ActivityThread.java:4363)
W/System.err(  235):    at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err(  235):    at java.lang.reflect.Method.invoke(Method.java:521)
W/System.err(  235):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
W/System.err(  235):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
W/System.err(  235):    at dalvik.system.NativeStart.main(Native Method)

最佳答案

首先你必须到这个链接,你可以从中下载最新的库:

http://www.apache.org/dyn/closer.cgi/poi/release/bin/poi-bin-3.9-20121203.tar.gz

然后将以下代码放在 onCreate 或 onResume 方法上:

HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet firstSheet = workbook.createSheet("Sheet No: 1");
HSSFSheet secondSheet = workbook.createSheet("Sheet No: 2");
HSSFRow rowA = firstSheet.createRow(0);
HSSFCell cellA = rowA.createCell(0);
cellA.setCellValue(new HSSFRichTextString("Sheet One"));
HSSFRow rowB = secondSheet.createRow(0);
HSSFCell cellB = rowB.createCell(0);
cellB.setCellValue(new HSSFRichTextString("Sheet two"));
FileOutputStream fos = null;
try {
    String str_path = Environment.getExternalStorageDirectory().toString();
    File file ;
    file = new File(str_path, getString(R.string.app_name) + ".xls");
    fos = new FileOutputStream(file);
    workbook.write(fos);
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (fos != null) {
        try {
            fos.flush();
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    Toast.makeText(MainActivity.this, "Excel Sheet Generated", Toast.LENGTH_SHORT).show();
}

//要查看此 excel 文件,请转到 eclipse 中的文件资源管理器 -> SDCard 路径 -> Excel.xls -> 拉取它 -> 查看它。

关于android - 如何在android中创建一个excel文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8006087/

相关文章:

excel - 如何在 Excel VBA 中编写一个采用参数范围或列表的函数?

mysql - 将excel表导入mysql的最简单方法是什么

excel - 调整ActiveCell.FormulaR1C1

asp.net-mvc - WebApi OData 元数据/描述

android - 某些手机​​的 DrawerLayout 图片

android - 覆盖每个 Activity 的 Activity 转换

android - 如何同时缩放两个 ImageView?

android - DatePickerDialog +/- 按钮的监听器

excel - 将日期/时间拆分为 2 列

Titanium 中的 Android 视频控制位置