質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

0回答

2235閲覧

android上でPOI WorkbookFactoryを用いてのExcelを開いたときのエラー

sonozaki

総合スコア0

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2020/11/12 17:29

編集2022/01/12 10:55

前提・実現したいこと

独学で進めているため前提知識が足りていない中での質問になり申し訳ありません

android(kotlin)でExcelのテンプレートを開く→記入後、別名保存を行いたいと考えています
その中でpoi-ooxmlを用いてWorkbookFactoryによりExcelを開こうとしたところ
以下のエラーが発生いたしました。

発生している問題・エラーメッセージ

2020-11-13 01:34:52.628 12038-12038/com.example.myapplication123345 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.myapplication123345, PID: 12038 java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/xml/stream/XMLStreamReader; at org.apache.xmlbeans.XmlBeans.buildStreamToNodeMethod(XmlBeans.java:251) at org.apache.xmlbeans.XmlBeans.<clinit>(XmlBeans.java:138) at org.apache.xmlbeans.XmlBeans.typeLoaderForClassLoader(XmlBeans.java:719) at org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument$Factory.getTypeLoader(Unknown Source:25) at org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument$Factory.parse(Unknown Source:0) at org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:86) at org.apache.poi.xssf.usermodel.-$$Lambda$gobcPWQfEUc0tCYBAe7wHcxGUMU.init(Unknown Source:2) at org.apache.poi.ooxml.POIXMLFactory.createDocumentPart(POIXMLFactory.java:61) at org.apache.poi.ooxml.POIXMLDocumentPart.read(POIXMLDocumentPart.java:684) at org.apache.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:180) at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:288) at org.apache.poi.xssf.usermodel.XSSFWorkbookFactory.createWorkbook(XSSFWorkbookFactory.java:97) at org.apache.poi.xssf.usermodel.XSSFWorkbookFactory.createWorkbook(XSSFWorkbookFactory.java:147) at org.apache.poi.xssf.usermodel.-$$Lambda$yquywgZvwleeEnxnw8O_y36aF30.apply(Unknown Source:2) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:256) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:221) at com.example.myapplication123345.MainActivity.onActivityResult(**MainActivity**.kt:62)          → val workBook = WorkbookFactory.create(inputStream)

該当のソースコード

MainActivity

kotlin

1package com.example.myapplication123345 2 3import android.annotation.SuppressLint 4import android.content.Intent 5import android.net.Uri 6import android.os.Bundle 7import android.widget.TextView 8import android.widget.Toast 9import androidx.appcompat.app.AppCompatActivity 10import kotlinx.android.synthetic.main.activity_main.* 11import org.apache.poi.ss.usermodel.WorkbookFactory 12 13import java.io.File 14import java.io.FileOutputStream 15import java.nio.file.Paths 16 17const val REQUEST_IMAGE_GET = 2 18var pickerInitialUri:Uri?=null 19lateinit var mainV:TextView 20 21class MainActivity : AppCompatActivity() { 22 23 private var tmpuri:Uri?=null 24 override fun onCreate(savedInstanceState: Bundle?) { 25 super.onCreate(savedInstanceState) 26 setContentView(R.layout.activity_main) 27 mainV=findViewById(R.id.aaa) 28 29 val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply { 30 type = "*/*" 31 } 32 if (intent.resolveActivity(packageManager) != null) { 33 startActivityForResult(intent, REQUEST_IMAGE_GET) 34 } 35 36 } 37 38 39 @SuppressLint("MissingSuperCall") 40 public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { 41 println("写真エリア") 42 println(requestCode.toString()) 43 println(resultCode.toString()) 44 aaa.text=requestCode.toString() 45 if (requestCode==2) { 46 47 data?.data?.also { uri -> 48 val inputStream = contentResolver.openInputStream(uri) 49 aaa.text=uri.toString() 50 51 val workBook = WorkbookFactory.create(inputStream) 52 53// エクセルシートを作成 54 val sheet = workBook.createSheet() 55 val row = sheet.createRow(0) 56 val cell = row.createCell(0) 57 cell.setCellValue("テスト") 58 val fileOutputStream = FileOutputStream("test.xlsx") 59 workBook.write(fileOutputStream) 60 fileOutputStream.close() 61 62 }

build.gradle

kotlin

1apply plugin: 'com.android.application' 2 3apply plugin: 'kotlin-android' 4 5apply plugin: 'kotlin-android-extensions' 6 7 8 9android { 10 compileSdkVersion 29 11 buildToolsVersion "29.0.3" 12 13 14 15 compileOptions { 16 sourceCompatibility JavaVersion.VERSION_1_8 17 targetCompatibility JavaVersion.VERSION_1_8 18 } 19 20 21 22 23 defaultConfig { 24 applicationId "com.example.myapplication123345" 25 minSdkVersion 29 26 targetSdkVersion 29 27 versionCode 1 28 versionName "1.0" 29 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 30 31 } 32 buildTypes { 33 release { 34 35 minifyEnabled false 36 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 37 } 38 } 39} 40 41dependencies { 42 implementation fileTree(dir: 'libs', include: ['*.jar']) 43 implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 44 implementation 'androidx.appcompat:appcompat:1.2.0' 45 implementation 'androidx.core:core-ktx:1.3.2' 46 implementation 'androidx.constraintlayout:constraintlayout:2.0.4' 47 testImplementation 'junit:junit:4.12' 48 androidTestImplementation 'androidx.test.ext:junit:1.1.2' 49 androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' 50 implementation("org.apache.poi:poi:4.1.2") 51 implementation 'org.apache.poi:poi-ooxml:4.1.2' 52 implementation 'androidx.appcompat:appcompat:1.2.0' 53 implementation 'androidx.constraintlayout:constraintlayout:2.0.4' 54 androidTestImplementation 'androidx.test:runner:1.3.0' 55 androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' 56} 57

試したこと

WorkbookFactoryからエラーが発生しており、おそらくXmlBeans.javaの
「import javax.xml.stream.XMLStreamReader;」
の読み込みがエラーの起点ではないのかと考え,
dependenciesに追加の記述が必要なのかと考えているのですが具体的が解決法を見つけることができませんでした。
お手数ですがお力添え願えればと思います。

〇追記

XMLm回りのバージョンが一致していない可能性あり。。。。?もう少し調べてみます

〇追記2
build.gradle

kotlin

1implementation"org.apache.poi:poi-ooxml-schemas:4.1.2" 2implementation"org.apache.xmlbeans:xmlbeans:3.1.0" 3implementation"stax:stax-api:1.0.1" 4

build.gradleに上を追加することでimport javax.xml.stream.XMLStreamReader;のエラーは回避することはできましたが次は以下のエラーが発生
前には進んでそうですが難しいなぁ

エラーメッセージ

2020-11-17 06:27:43.655 19526-19526/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.myapplication, PID: 19526 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { dat=content://com.android.providers.downloads.documents/document/67 flg=0x43 }} to activity {com.example.myapplication/com.example.myapplication.MainActivity}: java.lang.RuntimeException: http://xml.org/sax/properties/declaration-handler at android.app.ActivityThread.deliverResults(ActivityThread.java:4397) at android.app.ActivityThread.handleSendResult(ActivityThread.java:4439) at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:49) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:113) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:71) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1836) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6708) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:911) Caused by: java.lang.RuntimeException: http://xml.org/sax/properties/declaration-handler at org.apache.xmlbeans.impl.store.Locale$SaxLoader.<init>(Locale.java:3397) at org.apache.xmlbeans.impl.store.Locale$XmlReaderSaxLoader.<init>(Locale.java:3087) at org.apache.xmlbeans.impl.store.Locale.getSaxLoader(Locale.java:3072) at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1272) at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1259) at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345) at org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument$Factory.parse(Unknown Source:6) at org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:86) at org.apache.poi.xssf.usermodel.-$$Lambda$aHAEGSKKrWHqrDl7wEbry96rXeU.init(Unknown Source:2) at org.apache.poi.ooxml.POIXMLFactory.createDocumentPart(POIXMLFactory.java:61) at org.apache.poi.ooxml.POIXMLDocumentPart.read(POIXMLDocumentPart.java:684) at org.apache.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:180) at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:288) at org.apache.poi.xssf.usermodel.XSSFWorkbookFactory.createWorkbook(XSSFWorkbookFactory.java:97) at org.apache.poi.xssf.usermodel.XSSFWorkbookFactory.createWorkbook(XSSFWorkbookFactory.java:147) at org.apache.poi.xssf.usermodel.-$$Lambda$z1kdgATCuRBJTgZDpIltpBz3eIQ.apply(Unknown Source:2) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:256) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:221) at com.example.myapplication.MainActivity.onActivityResult(MainActivity.kt:34) 省略

補足情報(FW/ツールのバージョンなど)

androidstudio3.5.3
android10.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問