Java 试图从内部存储器中读取.xlsx文件中的数据时,出现“找不到文件”错误
我正在尝试从存储在内部存储器中的.xlsx文件读取数据,但在尝试访问该文件时出现了“未找到文件”错误 我已经尽力解决这个问题,但没有得到答案 有什么解决办法吗 这是我的密码Java 试图从内部存储器中读取.xlsx文件中的数据时,出现“找不到文件”错误,java,android,Java,Android,我正在尝试从存储在内部存储器中的.xlsx文件读取数据,但在尝试访问该文件时出现了“未找到文件”错误 我已经尽力解决这个问题,但没有得到答案 有什么解决办法吗 这是我的密码 if (v == btnChoose) { Intent intent = new Intent() .setType("*/*") .setAction(Intent.ACTION_GET_CO
if (v == btnChoose) {
Intent intent = new Intent()
.setType("*/*")
.setAction(Intent.ACTION_GET_CONTENT);
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(Intent.createChooser(intent, "Select a
file"), 1);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent
data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK) {
if ((data != null) && (data.getData() != null)) {
Uri selectedFile = data.getData();
String PathHolder = data.getData().getPath();
try {
InputStream stream =
getContentResolver().openInputStream(data.getData());
onReadClick(stream);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Toast.makeText(this, String.valueOf(selectedFile),
Toast.LENGTH_SHORT).show();
}
}
}
public void onReadClick(InputStream filepath) {
printlnToUser("reading XLSX file from resources");
try {
XSSFWorkbook workbook = new XSSFWorkbook(filepath);
XSSFSheet sheet = workbook.getSheetAt(0);
int rowsCount = sheet.getPhysicalNumberOfRows();
FormulaEvaluator formulaEvaluator =
workbook.getCreationHelper().createFormulaEvaluator();
for (int r = 0; r < rowsCount; r++) {
Row row = sheet.getRow(r);
int cellsCount = row.getPhysicalNumberOfCells();
for (int c = 0; c < cellsCount; c++) {
String value = getCellAsString(row, c, formulaEvaluator);
String cellInfo = "r:" + r + "; c:" + c + "; v:" + value;
printlnToUser(cellInfo);
}
}
} catch (Exception e) {
printlnToUser(e.toString());
}
}
错误
E/AndroidRuntime:致命异常:主
流程:com.smartloan.smtrick.electionapp,PID:18818
org.apache.poi.javax.xml.stream.FactoryConfigurationError:找不到提供程序com.bea.xml.stream.EventFactory
位于org.apache.poi.javax.xml.stream.FactoryFinder.newInstanceFactoryFinder.java:72
位于org.apache.poi.javax.xml.stream.FactoryFinder.findFactoryFinder.java:178
位于org.apache.poi.javax.xml.stream.FactoryFinder.findFactoryFinder.java:92
位于org.apache.poi.javax.xml.stream.XMLEventFactory.newInstanceXMLEventFactory.java:30 位于org.apache.poi.openxml4j.opc.internal.marshallers.PackagePropertiesMarshaller.PackagePropertiesMarshaller.java:41 位于org.apache.poi.openxml4j.opc.OPCPackage.initOPCPackage.java:161 在org.apache.poi.openxml4j.opc.OPCPackage.OPCPackage.java:141 位于org.apache.poi.openxml4j.opc.ZipPackage.ZipPackage.java:97 位于org.apache.poi.openxml4j.opc.OPCPackage.openOPCPackage.java:324 位于org.apache.poi.util.PackageHelper.openPackageHelper.java:37 位于org.apache.poi.xssf.usermodel.XSSFWorkbook.XSSFWorkbook.java:295 请访问com.smartloan.smtrick.electionapp.Activity\u ReadPdf.onReadClickActivity\u ReadPdf.java:181 请访问com.smartloan.smtrick.electionapp.Activity\u ReadPdf.onActivityResultActivity\u ReadPdf.java:155 在android.app.Activity.dispatchActivityResultActivity.java:8249 在android.app.ActivityThread.deliverResultsActivityThread.java:4958 在android.app.ActivityThread.handleSendResultActivityThread.java:5006 在android.app.servertransaction.ActivityResultItem.executeActivityResultItem.java:51 在android.app.servertransaction.TransactionExecutor.ExecuteCallbackTransactionExecutor.java:135 在android.app.servertransaction.TransactionExecutor.executeTransactionExecutor.java:95 在android.app.ActivityThread$H.handleMessageActivityThread.java:2068 位于android.os.Handler.dispatchMessageHandler.java:107 在android.os.Looper.Looper.java:224 在android.app.ActivityThread.mainActivityThread.java:7551 在java.lang.reflect.Method.Invokenactive方法中 位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.RuntimeInit.java:539 位于com.android.internal.os.ZygoteInit.mainZygoteInit.java:995
E/MQSEventManagerDelegate:未能获取MQSService。intent.setFlagsFLAG\u GRANT\u READ\u URI\u PERMISSION | FLAG\u GRANT\u WRITE\u URI\u PERMISSION;你最好把它去掉,因为它毫无意义。您不能在此处授予任何权限。String PathHolder=data.getData.getPath;您应该查看.getPath返回的值,然后意识到它不是可用于file类的文件系统路径。相反,请查看uri.toString以查看您获得的内容方案。InputStream stream=getContentResolver.openInputStreamdata.getData;我将尝试此方法,谢谢youorg.apache.poi.javax.xml.stream.FactoryConfigurationError:Provider com.bea.xml.stream.EventFactory现在找不到此错误