如何创建文件 excel 在 android?

我必须创建一个文件 excel 软件。 有没有 API 创建文件 excel 或其他一些方式?

EDIT 7 十一月 2011

当年

我试图创建一个创建电子表格的示例 Excel 在此参考文献
https://www.vogella.com/tutori ... .html
, 我得到了 NullPointerException 在
workbook.write//;

, 使用它,我可以创建一个文件 excel 在门票上 SD, 但是当我打开这个文件时 excel 通过 MS office 2007, 我收到一条消息
Unable to read file


在这里堆栈 trace,
ExcelStudy

- 这是我使用该类的活动
WriteExcel



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/clos ... ar.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 选择文件 Explorer 在 eclipse -> 道路 -> SDCard Excel.xls -> 拔出 -> 为了见着他。

喜特乐

赞同来自:

你可以试试
http://jexcelapi.sourceforge.net/
/厘米。
http://www.vogella.de/articles ... .html
得到一些参考/ 或者
http://poi.apache.org/
从文件编写或读取 Excel.

裸奔

赞同来自:

组件类


class Bean {
String initial, firstName, middleName, lastName;

Bean/String initial, String firstName, String middleName, String lastName/ {
this.initial = initial;
this.firstName = firstName;
this.middleName = middleName;
this.lastName = lastName;
}

public String getInitial// {
return initial;
}

public String getFirstName// {
return firstName;
}

public String getMiddleName// {
return middleName;
}

public String getLastName// {
return lastName;
}

}


要创建的代码 ExcelSheet

sheet.addCell/new 标签/0, 0, "NameInitial"//;

sheet.addCell/new 标签/columnNumber,rowNumber,dataString//;


File directory, sd, file;
WritableWorkbook workbook;

void createExcelSheet// {
String csvFile = "ExcelsheetName.xls";
sd = Environment.getExternalStorageDirectory//;
directory = new File/sd.getAbsolutePath///;
file = new File/directory, csvFile/;
WorkbookSettings wbSettings = new WorkbookSettings//;
wbSettings.setLocale/new Locale/"en", "EN"//;
try {
workbook = Workbook.createWorkbook/file, wbSettings/;
createFirstSheet//;
createSecondSheet//;
//closing cursor
workbook.write//;
workbook.close//;
} catch /Exception e/ {
e.printStackTrace//;
}
}

void createFirstSheet// {
try {
List<bean> listdata = new ArrayList&lt;&gt;//;

listdata.add/new Bean/"mr","firstName1","middleName1","lastName1"//;
listdata.add/new Bean/"mr","firstName1","middleName1","lastName1"//;
listdata.add/new Bean/"mr","firstName1","middleName1","lastName1"//;
//Excel sheet name. 0 /number/represents first sheet
WritableSheet sheet = workbook.createSheet/"sheet1", 0/;
// column and row title
sheet.addCell/new Label/0, 0, "NameInitial"//;
sheet.addCell/new Label/1, 0, "firstName"//;
sheet.addCell/new Label/2, 0, "middleName"//;
sheet.addCell/new Label/3, 0, "lastName"//;

for /int i = 0; i &lt; listdata.size//; i++/ {
sheet.addCell/new Label/0, i + 1, listdata.get/i/.getInitial////;
sheet.addCell/new Label/1, i + 1, listdata.get/i/.getFirstName////;
sheet.addCell/new Label/2, i + 1, listdata.get/i/.getMiddleName////;
sheet.addCell/new Label/3, i + 1, listdata.get/i/.getLastName////;
}
} catch /Exception e/ {
e.printStackTrace//;
}

}

void createSecondSheet// {

try {
List<bean> listdata = new ArrayList&lt;&gt;//;
listdata.add/new Bean/"mr","firstName1","middleName1","lastName1"//;
listdata.add/new Bean/"mr","firstName1","middleName1","lastName1"//;
listdata.add/new Bean/"mr","firstName1","middleName1","lastName1"//;
//Excel sheet name. 0 /number/represents first sheet
WritableSheet sheet = workbook.createSheet/"sheet2", 0/;
// column and row title
sheet.addCell/new Label/0, 0, "NameInitial"//;
sheet.addCell/new Label/1, 0, "firstName"//;
sheet.addCell/new Label/2, 0, "middleName"//;
sheet.addCell/new Label/3, 0, "lastName"//;

for /int i = 0; i &lt; listdata.size//; i++/ {
sheet.addCell/new Label/0, i + 1, listdata.get/i/.getInitial////;
sheet.addCell/new Label/1, i + 1, listdata.get/i/.getFirstName////;
sheet.addCell/new Label/2, i + 1, listdata.get/i/.getMiddleName////;
sheet.addCell/new Label/3, i + 1, listdata.get/i/.getLastName////;
}
} catch /Exception e/ {
e.printStackTrace//;
}

}


数据读取S. ExcelSheet


public void readDataFromExcelSheet// {
List<bean> listOfBean = new ArrayList&lt;&gt;//;
try {
String filename = "ExcelsheetName.xls";
// Creating Input Stream
File sd = Environment.getExternalStorageDirectory//;
File directory = new File/sd.getAbsolutePath///;
File file = new File/directory, filename/;
Workbook workbook = null;
WorkbookSettings ws = new WorkbookSettings//;
ws.setGCDisabled/true/;
workbook = Workbook.getWorkbook/file, ws/;

int noOfSheets = workbook.getNumberOfSheets//;//this is return how many sheets available in excelsheet
String sheetsNames[] = workbook.getSheetNames//;//this is return all sheets names available in excelsheet
for /int x = 0; x &lt; noOfSheets; x++///here take all sheets
{
Sheet sheet = workbook.getSheet/x/;//here i taken first sheet
int rowCount = sheet.getRows//;//count total number of row or data in that sheet
for /int i = 0; i &lt; rowCount; i++/ {//take every row data
Cell[] column = sheet.getRow/i/;//take all data of one row

/*
for taking one by one column data
*/
for /int j = 0; j &lt; column.length; j++/ {//take every column data of row
System.out.print/"" + column[j].getContents// + "\t"/;//take one by one data
}
/*
for taking column data
*/
listOfBean.add/new Bean/column[0].getContents//, column[1].getContents//, column[2].getContents//, column[3].getContents////;

}

// if you want take different data from different sheets then use switch case
Sheet sheet1;
int rowCount1;
switch /x/ {
case 0:
//write code for sheet 0 read data
sheet1 = workbook.getSheet/0/;//here i taken first sheet
rowCount1 = sheet1.getRows//;//count total number of row or data in that sheet
for /int i = 0; i &lt; rowCount1; i++/ {//take every row data
Cell[] column = sheet1.getRow/i/;//take all data of one row
listOfBean.add/new Bean/column[0].getContents//, column[1].getContents//, column[2].getContents//, column[3].getContents////;
}
break;
case 1:
//write code for sheet 1 read data
sheet1 = workbook.getSheet/1/;//here i taken first sheet
rowCount1 = sheet1.getRows//;//count total number of row or data in that sheet
for /int i = 0; i &lt; rowCount1; i++/ {//take every row data
Cell[] column = sheet1.getRow/i/;//take all data of one row
listOfBean.add/new Bean/column[0].getContents//, column[1].getContents//, column[2].getContents//, column[3].getContents////;
}
break;
}


}

} catch /Exception e/ {
e.printStackTrace//;
}
}


</bean></bean></bean>

知食

赞同来自:

首先添加这些依赖项 build.gradle 您的应用程序:然后按照其他答案:


implementation 'org.apache.poi:poi:3.17'
implementation 'org.apache.poi:poi-ooxml:3.17'

江南孤鹜

赞同来自:

您只需使用表库 android.

把它添加到你的 gradle
implementation 'com.github.elirehema:worksheet:0.0.1'


在你的班上实施屁股


public class MainActivity extends AppCompatActivity {
private WorkSheet workSheet;
private Button button;
protected void onCreate/Bundle savedInstanceState/ {
super.onCreate/savedInstanceState/;
setContentView/R.layout.activity_main/;

button = findViewById/R.id.create_excel_sheet/;
final String path = "ExternalFilePath";

button.setOnClickListener/new View.OnClickListener// {
@Override
public void onClick/View view/ {
try {
workSheet = new WorkSheet.Builder/getApplicationContext//, path/
.setSheet/List<object>/
.writeSheet//;
} catch /IOException e/ {
e.printStackTrace//;
}
}
}/;


}}


https://elirehema.github.io/worksheet/
</object>

要回复问题请先登录注册