POIA is a simple library enabling Apache POI usage on Android.
Add JitPack to your repositories
:
allprojects {
repositories {
// ...
maven { url 'https://jitpack.io' }
}
}
And the POIA dependency itself:
implementation "com.github.SUPERCILEX.poi-android:poi:$poiVersion"
If you're using proguard, also add:
implementation "com.github.SUPERCILEX.poi-android:proguard:$poiVersion"
If you want source code and documentation, add the real Apache POI dependency as compileOnly
:
compileOnly "org.apache.poi:poi-ooxml:$poiVersion"
If you need a newer version of Apache POI than is provided by this transpiler, updating is as simple as making a fork and changing a few lines of code:
- Fork the repo and
update Apache POI
- PSA: you can find Apache POI release notes here
- Simply replace
SUPERCILEX
in the Gradle dependency with your own GitHub username - That's it, it's that simple! π
XSSFWorkbook
(*.xlsx
) does not work on pre-L (API < 21) devices. A simple solution is to show
the user some error message and gracefully downgrade to HSSFWorkbook
(*.xls
):
val workbook = if (isUnsupportedDevice) {
showToast(getString(R.string.export_unsupported_device_rationale))
HSSFWorkbook()
} else {
XSSFWorkbook()
}
// Example unsupportedDevice property
val isUnsupportedDevice by lazy { VERSION.SDK_INT < VERSION_CODES.LOLLIPOP || isLowRamDevice }
Make sure to test your implementation thoroughly pre-L since HSSFWorkbook
only supports a subset
of the Workbook
's APIs and might throw a UOE. Wikipedia even goes so far as to call it the
"Horrible SpreadSheet Format" so consider yourself warned. π