بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
دیتابیس اکسس
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
ChookD1
5 سال پیش
0
0
سلام
باتوجه سرچی که زدم این کار شدنی هست ، اما من تابحال انجامش نداده ام.
از سوالی که پرسیده اید معلوم میشه که تازه کار هستید ، لذا ممکنه توش بمونید. اما بدونید که شدنی هست.
ابتدا به Gradle خودتون میرید و در قسمت Dependences ها دو خط زیر رو به پروژه اضاف کنید و سپس از بالا سمت راست در اندروید استودیو بر روی Sync کلیک کنید تا پروژه چیزای کتابخونه های موردنیازی که بهش اضاف کردید رو توی پروژه تون دانلود و بریزه.
implementation 'org.apache.poi:poi:3.17' implementation 'org.apache.poi:poi-ooxml:3.17'
تقریبا کار تمامه
برای خوندنش از کد زیر استفاده کنید:
public void readDataFromExcelSheet() {
List<Bean> listOfBean = new ArrayList<>();
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 < 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 < 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 < 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 < 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 < 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();
}
}
برای ایجاد کردنش هم از کد زیر استفاده کنید:
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<>();
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 < 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<>();
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 < 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();
}
}
سپس برای ایجاد یک ردیف توی فایل درست شده ی خودتون کد زیر رو استفاده کنید:
sheet.addCell(new Label( 0 , 0 ,"NameInitial")); /// که این خط نمونه ای اصلِ زیر هست
sheet.addCell(new Label(columnNumber,rowNumber,dataString ));
کلاس نمونه که اگه کارکرده باشید توی ریسایکلر ویو و اداپترها کاربرد داره رو هم ایجاد کنید ( یک نمونه هست برای استفاده کردن ، نگارنده اسمشو گذاشته : Bean :
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;
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .