In this android tutorial, You are going to learn how to read excel file in android from asset folder using Apache POI. What is android Apache POI lib? To Read / Write Excel file (.xls or .xlsx) there are two types of library available – 1) JXL and 2) Apache POI. But the first one- Java JXL does not support the Excel 2007+ “.xlsx” format; it only supports the old BIFF (binary) “.xls” format. Apache POI supports both with a common design. We will use asset manager class to read excel file from asset folder.
I will suggest you to use POI library only. Now you have understand what to use. Let move forward, to read excel file from asset folder, first create a excel file. In excel file, you can create any number of columns and sheets. for this android example, I am using three columns name as- sno, date, details. below is sample excel data-
sno | date | details |
1 | 01-09-2018 | details about 1 |
2 | 02-09-2018 | details about 2 |
3 | 03-09-2018 | detais about 3 |
4 | 04-09-2018 | details about 4 |
Step by Step Process
- Create a excel file & put in asset folder
- Add POI lib dependency
- Read excel file in android
- Run the code
Create a excel file & put in asset folder
create a sample excel file as explain in above paragraph. You can create more columns and sheet. But if you are trying this code first time, so please work with three columns only. now same the file name as “myexcelsheet.xls” Go to android project directory and open your android project. Go inside folder app -> src ->main. There you will see two folder name as java and res. Now create a new folder here name as assets and put myexcelsheet.xls file inside it.
Note -: save file in .xls format only for this example. to read .xlsx file, there is slight difference in code.
Login & Download code
Add POI lib dependency in gradle
Now create a new project in android studio and add gradle dependency for apache POI library using below code
implementation "org.apache.poi:poi:3.17" implementation "org.apache.poi:poi-ooxml:3.17"
To display excel sheet data on phone screen, I am using a simple textview. By default android studio create a textview on activity_main.xml file.
activity-main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="blueappsoftware.readexcelfile.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Excel Data below -" android:id="@+id/textview" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" android:lineSpacingExtra="2dp" android:gravity="center" /> </LinearLayout>
Now open java activity file – ActivityMain.java. There are three important points-
- initialize asset manager
- open excel file
- initialize POI file system
- open work book
InputStream myInput; // initialize asset manager AssetManager assetManager = getAssets(); // open excel file name as myexcelsheet.xls myInput = assetManager.open("myexcelsheet.xls"); // Create a POI File System object POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput); // Create a workbook using the File System HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem); // Get the first sheet from workbook HSSFSheet mySheet = myWorkBook.getSheetAt(0);
read first excel sheet
please look at above code -at last line, there is getSheetAt(0). That means read sheet index number zero. if you have multiple sheet on excel file you can pass index of sheet. index started from 0 means first sheet.
Now it’s time to read data from row and column of the sheet. The concept is – use a loop to read row one by one. On each row- read column one by one. Apache POI library provides the method to read row and column in loop.
// We now need something to iterate through the cells. Iterator<Row> rowIter = mySheet.rowIterator(); // check if there is more row available HSSFRow myRow = (HSSFRow) rowIter.next(); // check if there is more column available HSSFCell myCell = (HSSFCell) cellIter.next();
You can read value in column using cell object. For example – myCell.toString(); below it complete code of main activity
package blueappsoftware.readexcelfile; import android.content.res.AssetManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import java.io.InputStream; import java.util.Iterator; public class MainActivity extends AppCompatActivity { String TAG ="main"; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = findViewById(R.id.textview); readExcelFileFromAssets(); } public void readExcelFileFromAssets() { try { InputStream myInput; // initialize asset manager AssetManager assetManager = getAssets(); // open excel sheet myInput = assetManager.open("myexcelsheet.xls"); // Create a POI File System object POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput); // Create a workbook using the File System HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem); // Get the first sheet from workbook HSSFSheet mySheet = myWorkBook.getSheetAt(0); // We now need something to iterate through the cells. Iterator<Row> rowIter = mySheet.rowIterator(); int rowno =0; textView.append("n"); while (rowIter.hasNext()) { Log.e(TAG, " row no "+ rowno ); HSSFRow myRow = (HSSFRow) rowIter.next(); if(rowno !=0) { Iterator<Cell> cellIter = myRow.cellIterator(); int colno =0; String sno="", date="", det=""; while (cellIter.hasNext()) { HSSFCell myCell = (HSSFCell) cellIter.next(); if (colno==0){ sno = myCell.toString(); }else if (colno==1){ date = myCell.toString(); }else if (colno==2){ det = myCell.toString(); } colno++; Log.e(TAG, " Index :" + myCell.getColumnIndex() + " -- " + myCell.toString()); } textView.append( sno + " -- "+ date+ " -- "+ det+"n"); } rowno++; } } catch (Exception e) { Log.e(TAG, "error "+ e.toString()); } } }
Run the code
Run the code in device OR emulator. You can see in below picture, Excel sheet data is showing on Textview in android app.
If you have any question, Please comment below.
Get more android tutorial:-
How to create PDF file in Android, Write Text, Image in PDF – Android code
How to read text file in android – read from internal/ external folder
I am a full Stack Developer. My skills are — Flutter, Java, Android, PHP, Node.js, JavaScript, AJAX, WordPress, SQL & many more. I have developed Android App for Police department, eCommerce App, Restaurant App, Daily Bill Invoice, Daily news, Location based App etc.
If you have any query, Please WhatsApp me at +91-9144040888 Or email me at kamal.bunkar@blueappsoftware.com
Use this piece of code which can be used to open arbitrary file (not only Excel).
General idea is to get based on file mime type which Intent
can handle it and then start those Intent
. For sure it may happen that system doesn’t have any intents to handle it or may have several Intents. Anyway here’s general direction:
Get mime type for given filename
public String getMimeType(String filename)
{
String extension = FileUtils.getExtension(filename);
// Let's check the official map first. Webkit has a nice extension-to-MIME map.
// Be sure to remove the first character from the extension, which is the "." character.
if (extension.length() > 0)
{
String webkitMimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.substring(1));
if (webkitMimeType != null)
return webkitMimeType;
}
return "*/*";
}
Then get default intent which will handle given mime type
public Intent getDefaultViewIntent(Uri uri)
{
PackageManager pm = this.getPackageManager();
Intent intent = new Intent(Intent.ACTION_VIEW);
// Let's probe the intent exactly in the same way as the VIEW action
String name=(new File(uri.getPath())).getName();
intent.setDataAndType(uri, this.getMimeType(name));
final List<ResolveInfo> lri = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if(lri.size() > 0)
return intent;
return null;
}
And as final step just start Intent
returned by getDefaultViewIntent()
Home > Creating/Reading an Excel file in Android.
Its easy to store records in database via android application. But what’s the use of it when we cannot get the records on a sheet of paper.
Here’s a simple and systematic solution to get your records in an excel sheet in Android.
Excel Sheet accessing through android application in very few lines of code.
To achieve this download poi-3.7.jar or later from the following reference:-
http://www.java2s.com/Code/Jar/p/Downloadpoi37jar.htm
Note:- make sure its a jar file for eclipse.
Steps to achieve the target:-
1) Create a project in android “Exel_Example” and fill all the required details.
2) In AndroidManifest.xml file add “WRITE_EXTERNAL_STORAGE ” permission as we require to access the external storage for saving the Excel file.
<uses-permissionandroid:name=”android.permission.WRITE_EXTERNAL_STORAGE”/>
3) Add the poi-3.7.jar (or updated version) that you have downloaded from the link provided above. Add this jar to your project’s External Jars.
For that go to your project’s properties –> click on java Buildpath –> add External Jars –> Browse the jar.
4)Create a new class named “MainActivity.java”
Here we have 2 functionality to cover.
First is to save the Excel File and other is to read the contents of the Excel File.
To save a Excel file, check out the function “saveExcelFile” below
private static boolean saveExcelFile(Context context, String fileName) { // check if available and not read only if (!isExternalStorageAvailable() || isExternalStorageReadOnly()) { Log.e(TAG, “Storage not available or read only”); return false; } boolean success = false; //New Workbook Workbook wb = new HSSFWorkbook(); Cell c = null; //Cell style for header row CellStyle cs = wb.createCellStyle(); cs.setFillForegroundColor(HSSFColor.LIME.index); cs.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); //New Sheet Sheet sheet1 = null; sheet1 = wb.createSheet(“myOrder”); // Generate column headings Row row = sheet1.createRow(0); c = row.createCell(0); c.setCellValue(“Item Number”); c.setCellStyle(cs); c = row.createCell(1); c.setCellValue(“Quantity”); c.setCellStyle(cs); c = row.createCell(2); c.setCellValue(“Price”); c.setCellStyle(cs); sheet1.setColumnWidth(0, (15 * 500)); sheet1.setColumnWidth(1, (15 * 500)); sheet1.setColumnWidth(2, (15 * 500)); // Create a path where we will place our List of objects on external storage File file = new File(context.getExternalFilesDir(null), fileName); FileOutputStream os = null; try { os = new FileOutputStream(file); wb.write(os); Log.w(“FileUtils”, “Writing file” + file); success = true; } catch (IOException e) { Log.w(“FileUtils”, “Error writing ” + file, e); } catch (Exception e) { Log.w(“FileUtils”, “Failed to save file”, e); } finally { try { if (null != os) os.close(); } catch (Exception ex) { } } return success; }
Here we pass the file name as the parameter to the function.
Row row = sheet1.createRow(0); c = row.createCell(0); c.setCellValue(“Item Number”); c.setCellStyle(cs);
This is how we add/enter the value in the cell.
The above code will add the value “Item Number” in the 0th row and 0th column.
To read the contents of the file have a look at the function “readExcelFile” below
private static void readExcelFile(Context context, String filename) { if (!isExternalStorageAvailable() || isExternalStorageReadOnly()) { Log.e(TAG, “Storage not available or read only”); return; } try{ // Creating Input Stream File file = new File(context.getExternalFilesDir(null), filename); FileInputStream myInput = new FileInputStream(file); // Create a POIFSFileSystem object POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput); // Create a workbook using the File System HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem); // Get the first sheet from workbook HSSFSheet mySheet = myWorkBook.getSheetAt(0); /** We now need something to iterate through the cells.**/ Iterator rowIter = mySheet.rowIterator(); while(rowIter.hasNext()){ HSSFRow myRow = (HSSFRow) rowIter.next(); Iterator cellIter = myRow.cellIterator(); while(cellIter.hasNext()){ HSSFCell myCell = (HSSFCell) cellIter.next(); Log.d(TAG, “Cell Value: ” + myCell.toString()); Toast.makeText(context, “cell Value: ” + myCell.toString(), Toast.LENGTH_SHORT).show(); } } }catch (Exception e){e.printStackTrace(); } return; }
Each and every entry in the cell will be printed in the log.
[wcp-carousel id=”10027″]
Here is the entire code.
MainActivity.java
package com.example.excel_example; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Iterator; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { Button writeExcelButton,readExcelButton; static String TAG = “ExelLog”; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); writeExcelButton = (Button) findViewById(R.id.writeExcel); writeExcelButton.setOnClickListener(this); readExcelButton = (Button) findViewById(R.id.readExcel); readExcelButton.setOnClickListener(this); } public void onClick(View v) { switch (v.getId()) { case R.id.writeExcel: saveExcelFile(this,”myExcel.xls”); break; case R.id.readExcel: readExcelFile(this,”myExcel.xls”); break; } } private static boolean saveExcelFile(Context context, String fileName) { // check if available and not read only if (!isExternalStorageAvailable() || isExternalStorageReadOnly()) { Log.e(TAG, “Storage not available or read only”); return false; } boolean success = false; //New Workbook Workbook wb = new HSSFWorkbook(); Cell c = null; //Cell style for header row CellStyle cs = wb.createCellStyle(); cs.setFillForegroundColor(HSSFColor.LIME.index); cs.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); //New Sheet Sheet sheet1 = null; sheet1 = wb.createSheet(“myOrder”); // Generate column headings Row row = sheet1.createRow(0); c = row.createCell(0); c.setCellValue(“Item Number”); c.setCellStyle(cs); c = row.createCell(1); c.setCellValue(“Quantity”); c.setCellStyle(cs); c = row.createCell(2); c.setCellValue(“Price”); c.setCellStyle(cs); sheet1.setColumnWidth(0, (15 * 500)); sheet1.setColumnWidth(1, (15 * 500)); sheet1.setColumnWidth(2, (15 * 500)); // Create a path where we will place our List of objects on external storage File file = new File(context.getExternalFilesDir(null), fileName); FileOutputStream os = null; try { os = new FileOutputStream(file); wb.write(os); Log.w(“FileUtils”, “Writing file” + file); success = true; } catch (IOException e) { Log.w(“FileUtils”, “Error writing ” + file, e); } catch (Exception e) { Log.w(“FileUtils”, “Failed to save file”, e); } finally { try { if (null != os) os.close(); } catch (Exception ex) { } } return success; } private static void readExcelFile(Context context, String filename) { if (!isExternalStorageAvailable() || isExternalStorageReadOnly()) { Log.e(TAG, “Storage not available or read only”); return; } try{ // Creating Input Stream File file = new File(context.getExternalFilesDir(null), filename); FileInputStream myInput = new FileInputStream(file); // Create a POIFSFileSystem object POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput); // Create a workbook using the File System HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem); // Get the first sheet from workbook HSSFSheet mySheet = myWorkBook.getSheetAt(0); /** We now need something to iterate through the cells.**/ Iterator rowIter = mySheet.rowIterator(); while(rowIter.hasNext()){ HSSFRow myRow = (HSSFRow) rowIter.next(); Iterator cellIter = myRow.cellIterator(); while(cellIter.hasNext()){ HSSFCell myCell = (HSSFCell) cellIter.next(); Log.d(TAG, “Cell Value: ” + myCell.toString()); Toast.makeText(context, “cell Value: ” + myCell.toString(), Toast.LENGTH_SHORT).show(); } } }catch (Exception e){e.printStackTrace(); } return; } public static boolean isExternalStorageReadOnly() { String extStorageState = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(extStorageState)) { return true; } return false; } public static boolean isExternalStorageAvailable() { String extStorageState = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(extStorageState)) { return true; } return false; } }
Create a main.xml file in “layout” folder
In this xml file, add two buttons with id’s “writeExcel” and “readExcel” representing the “WriteExel” and “ReadExcel” buttons respectively.
Once you have done with all the above steps, your application is ready to test.
[wcp-carousel id=”10008″]
Read More
Рассказываем, какими программами можно открыть таблицы формата .xlsx на Android. Собрали для вас лучшие приложения, которые можно скачать бесплатно.
И школьники, и студенты, и представители взрослого поколения рано или поздно сталкиваются с таблицами – файлами, которые в удобном виде содержат различную информацию. Например, расписание в школе, график отпусков, учет доходов и расходов, заказы на поставки для торговой точки. О пользе электронных таблиц можно говорить бесконечно, поскольку в них еще и работать довольно комфортно, но мы не будем об этом.
Что делать в ситуации, когда компьютера с Microsoft Excel нет под рукой, но нужно срочно открыть или поработать с таблицей? В статье мы расскажем, чем же, собственно, можно открыть эксель-таблицу на мобильном телефоне Андроид. Под наш прицел попал формат xlsx, который появился в 2007 году и является более совершенной, функциональной версией xls. На человеческом языке – это современный стандарт для таблиц.
Мы рассмотрим специальные приложения, которые созданы для того, чтобы открыть файл xlsx, и офисные пакеты, в которых описываемая возможность – лишь одна из множества функций.
Содержание
- 1 С помощью специальных приложений
- 1.1 Microsoft Excel
- 1.2 Google Таблицы
- 1.3 XLSX Viewer
- 1.4 XLSX File Reader
- 2 С помощью офисных пакетов
- 2.1 WPS Office
- 2.2 Office Document Reader
- 2.3 Document Viewer
- 2.4 OfficeSuite
- 3 Заключение
С помощью специальных приложений
Microsoft Excel
Начнем с самого очевидного – фирменного приложения компании Microsoft, которая, собственно, и изобрела эти таблицы. Их программа для телефона Android имеет аналогичное название, но скачать ее можно бесплатно. Однако все же для доступа к полному пакету функций потребуется оформить платную подписку на Microsoft 365.
Microsoft Excel позволяет не только открывать файлы, но и редактировать их, а также создавать свои по многочисленным шаблонам прямо на ходу. На смартфоне вы можете использовать все те же формулы и функции для расчета, что и в компьютерной версии. Также присутствует возможность визуализации данных (например, в виде графиков и диаграмм), а на устройствах с поддержкой сенсорного ввода доступна функция рисования, что помогает быстро делать заметки и выделять какие-либо области.
Но даже у такого неоспоримого лидера есть свои минусы. Для пользования приложением необходима учетная запись Microsoft, а для доступа ко всем функциям – платная подписка Microsoft 365. Программа весит немного (65 МБ), но требовательна к оперативной памяти (не менее 1 ГБ), версии ОС (Android 6.0+) и процессору (на базе ARM или Intel x86).
Несмотря на недостатки, приложение остается самым популярным для открытия xlsx файлов (более 1 млрд скачиваний), и мы также рекомендуем его к установке.
Google Таблицы
Google Таблицы – еще одна востребованная у пользователей программа, о чем можно судить по 500 млн скачиваний. Она также позволяет открывать и редактировать таблицы, форматировать ячейки и вводить в них формулы, сохранять файлы. Правда, в отличие от того же Microsoft Excel, здесь отсутствует возможность визуализации данных.
В чем явный плюс Google Таблицы, так это в том, что программа работает как в онлайн, так и в офлайн режимах. Компьютерная версия позволяет создавать таблицы и работать с ними, грубо говоря, в «интернете», а точнее, в облачном хранилище. За этим скрываются весомые достоинства – можно открыть доступ к таблицам коллегам для совместной работы, оставлять комментарии, а сам файл хранится в облаке и сохраняется автоматически, что сводит на нет вероятность его потери или несохранения. Приложение наследует все эти функции.
Также Google Таблицы умеют работать в оффлайн-режиме с xlsx файлами, которые хранятся в памяти смартфона. К преимуществам стоит также отнести простой удобный интерфейс и относительно невысокие требования к системе (Android 5.0+).
XLSX Viewer
К сожалению, вышеописанные программы – это два «титана», которые не оставляют и призрачного шанса своим конкурентам. Но мы нашли парочку других приложений от менее известных разработчиков, которые также справляются со своими задачами. Одно из них – это англоязычная XLSX viewer.
Загроможденный интерфейс может отпугнуть пользователя, но стоит немного разобраться, и все встает на свои места. Программа автоматически осуществляет поиск xlsx файлов и позволяет открывать их в один клик. Возможности редактирования отсутствуют.
К достоинствам XLSX Viewer следует отнести небольшой размер (19 МБ), низкие требования к системе (Android 4.4+) и то, что все функции доступны бесплатно, без каких-либо подписок. Также программа умеет открывать файлы других форматов (pdf, docx, ppt), но основное ее назначение – это работа с таблицами.
Из недостатков – не самый привлекательный дизайн, а также наличие рекламы, которая мешает работе.
XLSX File Reader
Подобрались к самому минималистичному и менее популярному приложению подборки. XLSX File Reader, как и XLSX Viewer, предназначен только для открытия (не редактирования) xlsx файлов. Программа также автоматически соберет все таблицы, что есть у вас на смартфоне Android, и отобразит их в удобном окошке.
За что следует похвалить XLSX File Reader, так это за приятный дизайн приложения. Оно не перегружено лишними функциями, а реклама хоть и есть, но не отвлекает от работы. Эта программа наименее требовательная в нашей подборке – ее размер составляет всего 7.9 МБ, а для запуска требуется Android 4.1. Поэтому, если у вас слабый смартфон и вы ищете, чем открыть на Андроид xlsx, то рекомендуем эту программу.
С помощью офисных пакетов
В этом подразделе представлены программы, которые предназначены для открытия не только файлов xlsx, но и других документов (текстовых, презентации и так далее).
WPS Office
WPS Office является наиболее популярным приложением из рассматриваемой категории – его загрузили свыше 1.3 млрд раз. Оно превращает ваш смартфон Android в подобие онлайн-офиса и позволяет работать со всевозможными документами, в том числе и с таблицами Excel.
Что касается последнего, то WPS Office не только открывает такие файлы, но и позволяет их править, использовать формулы и так далее. Доступен богатый инструментарий для решения практически любых задач.
Открывает WPS Office xlsx таблицы быстро, а дизайн окна приятный и не перегружен лишним. Более того, можно настроить между мобильным интерфейсом и привычным десктопным. Также, если постараться, можно связать приложение с ПК для удобного редактирования. Сохранять файлы можно как на памяти телефона, так и в облачном сервисе WPS.
Из минусов – обилие рекламы, наличие платной подписки (хотя для работы с таблицами она не потребуется). Программа довольно «тяжелая» (119 МБ), но ее требования к системе средние (Android 5.0+).
Office Document Reader
Еще один «карманный офис» порадует богатым инструментарием – помимо рассматриваемого формата, приложение способно открыть csv (тоже таблицы), epub (электронные книги) и многие другие файлы.
С xlsx Office Document Reader справляется на «ура» – программа быстро находит их (но, стоит отметить, не все) и без проблем открывает. Правда, отсутствует возможность редактирования, а дизайн такой же, как у XLSX viewer.
Из плюсов следует отметить «компактность» и удобство – найденные файлы аккуратно сложены по категориям, которые олицетворяют форматы, и тут не заблудится даже неподготовленный пользователь. Также отметим небольшой «вес» приложения – всего 28 МБ.
Есть и недостатки. Самым неприятным из них является обилие рекламы, что мешает комфортной работе, а интерфейс можно назвать устаревшим, поскольку в большинстве рассматриваемых кандидатов подборки он куда симпатичнее.
Document Viewer
Document Viewer представляет собой еще одну «сборную солянку», способную открывать файлы Word, Excel, PowerPoint и других продуктов Microsoft. Функциональность у программы минимальная, равно как и дизайн. Но это только плюс, поскольку интерфейс не загроможден лишними функциями.
Что касается работы с файлами xlsx, то приложение находит и открывает их все. В базовой версии возможность редактирования отсутствует – для этого нужно скачать плагин, что Document Viewer сам предложит сделать.
К достоинствам мы отнесем простоту в использовании, приятный и незагроможденный дизайн и отличную работу. К недостаткам – все ту же рекламу. Однако, от последней можно избавиться, купив платную подписку.
OfficeSuite
OfficeSuite – очередной отличный кандидат в нашей подборке, который помогает не только открыть xlsx файлы, но и редактировать их, используя стандартную панель инструментов. В этом плане приложение справляется на «ура» точно также, как и его собратья.
Есть у программы ряд других особенностей, которые упрощают работу с таблицами в целом. Так, вы можете бесплатно получить 5 ГБ облачного хранилища и хранить там файлы. Кросс-платформенные возможности позволяют связать ПК и Android для удобного редактирования. Интерфейс – удобный и интуитивно понятный. Программа переведена на более чем 65 языков – на русский в том числе. Размер у OfficeSuite средний (60 МБ), но зато пойдет он на слабых смартфонах (Android 4.4+).
Реклама может подпортить впечатление от пользования, однако авторы предлагают оформить платную подписку, которая не только уберет этот недостаток, но и наделит пользователя различными бонусами (50 ГБ облачного хранилища, откроется более 20 дополнительных функций). Впрочем, никто не запрещает пользоваться программой бесплатно.
Заключение
В нашей подборке 8 программ для открытия xlsx файлов на Android – и все они по-своему хороши. Если взглянуть на специальные приложения для открытия таблиц, которые позволяют лишь просматривать их, то обратите внимание на XLSX Viewer и XLSX File Reader. Если вы привыкли работать с онлайн-документами, то вашим незаменимым помощником станут Google Таблицы. Ну а Microsoft Excel – решение универсальное и беспроигрышное.
Что касается офисных пакетов, то все они пойдут для открытия xlsx таблиц, но не для редактирования, о чем мы непременно упомянули при описании.
import
android.os.Bundle;
import
android.view.View;
import
android.widget.ProgressBar;
import
android.widget.Toast;
import
androidx.appcompat.app.AppCompatActivity;
import
androidx.core.widget.NestedScrollView;
import
androidx.recyclerview.widget.LinearLayoutManager;
import
androidx.recyclerview.widget.RecyclerView;
import
com.android.volley.Request;
import
com.android.volley.RequestQueue;
import
com.android.volley.Response;
import
com.android.volley.VolleyError;
import
com.android.volley.toolbox.JsonObjectRequest;
import
com.android.volley.toolbox.Volley;
import
org.json.JSONArray;
import
org.json.JSONException;
import
org.json.JSONObject;
import
java.util.ArrayList;
public
class
MainActivity
extends
AppCompatActivity {
private
ArrayList<UserModal> userModalArrayList;
private
UserRVAdapter userRVAdapter;
private
RecyclerView userRV;
private
ProgressBar loadingPB;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
userModalArrayList =
new
ArrayList<>();
userRV = findViewById(R.id.idRVUsers);
loadingPB = findViewById(R.id.idPBLoading);
getDataFromAPI();
}
private
void
getDataFromAPI() {
RequestQueue queue = Volley.newRequestQueue(MainActivity.
this
);
JsonObjectRequest jsonObjectRequest =
new
JsonObjectRequest(Request.Method.GET, url,
null
,
new
Response.Listener<JSONObject>() {
@Override
public
void
onResponse(JSONObject response) {
loadingPB.setVisibility(View.GONE);
try
{
JSONObject feedObj = response.getJSONObject(
"feed"
);
JSONArray entryArray = feedObj.getJSONArray(
"entry"
);
for
(
int
i=
0
; i<entryArray.length(); i++){
JSONObject entryObj = entryArray.getJSONObject(i);
String firstName = entryObj.getJSONObject(
"gsx$firstname"
).getString(
"$t"
);
String lastName = entryObj.getJSONObject(
"gsx$lastname"
).getString(
"$t"
);
String email = entryObj.getJSONObject(
"gsx$email"
).getString(
"$t"
);
String avatar = entryObj.getJSONObject(
"gsx$avatar"
).getString(
"$t"
);
userModalArrayList.add(
new
UserModal(firstName, lastName, email, avatar));
userRVAdapter =
new
UserRVAdapter(userModalArrayList, MainActivity.
this
);
userRV.setLayoutManager(
new
LinearLayoutManager(MainActivity.
this
));
userRV.setAdapter(userRVAdapter);
}
}
catch
(JSONException e) {
e.printStackTrace();
}
}
},
new
Response.ErrorListener() {
@Override
public
void
onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.
this
,
"Fail to get data.."
, Toast.LENGTH_SHORT).show();
}
});
queue.add(jsonObjectRequest);
}
}