首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于无法确定新HSSFWorkbook(inputStream)的记录类型而导致的android HSSFWorkbook

由于无法确定新HSSFWorkbook(inputStream)的记录类型而导致的android HSSFWorkbook
EN

Stack Overflow用户
提问于 2016-04-04 13:31:42
回答 4查看 345关注 0票数 4

获取误差

代码语言:javascript
复制
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
       java.lang.RuntimeException: An error occured while executing doInBackground()
           at android.os.AsyncTask$3.done(AsyncTask.java:299)
           at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
           at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
           at java.util.concurrent.FutureTask.run(FutureTask.java:239)
           at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
           at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
           at java.lang.Thread.run(Thread.java:856)
        Caused by: java.lang.ExceptionInInitializerError
           at b.b.a.c.c.p.<init>(HSSFWorkbook.java:326)
           at b.b.a.c.c.p.<init>(HSSFWorkbook.java:289)
           at b.b.a.c.c.p.<init>(HSSFWorkbook.java:224)
           at b.b.a.c.c.p.<init>(HSSFWorkbook.java:382)
           at b.b.a.c.c.p.<init>(HSSFWorkbook.java:364)
           at com.d.link.d.d.a(ExportUtils.java:134)
           at com.d.link.activity.ey.a(SplashScreen.java:55)
           at com.d.link.activity.ey.doInBackground(SplashScreen.java:51)
           at android.os.AsyncTask$2.call(AsyncTask.java:287)
           at java.util.concurrent.FutureTask.run(FutureTask.java:234)
           at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
           at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
           at java.lang.Thread.run(Thread.java:856) 
        Caused by: b.b.a.c.b.dj: Unable to determine record types
           at b.b.a.c.b.dd.a(RecordFactory.java:434)
           at b.b.a.c.b.dd.<clinit>(RecordFactory.java:292)
           at b.b.a.c.c.p.<init>(HSSFWorkbook.java:326) 
           at b.b.a.c.c.p.<init>(HSSFWorkbook.java:289) 
           at b.b.a.c.c.p.<init>(HSSFWorkbook.java:224) 
           at b.b.a.c.c.p.<init>(HSSFWorkbook.java:382) 
           at b.b.a.c.c.p.<init>(HSSFWorkbook.java:364) 
           at com.d.link.d.d.a(ExportUtils.java:134) 
           at com.d.link.activity.ey.a(SplashScreen.java:55) 
           at com.d.link.activity.ey.doInBackground(SplashScreen.java:51) 
           at android.os.AsyncTask$2.call(AsyncTask.java:287) 
           at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
           at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
           at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
           at java.lang.Thread.run(Thread.java:856) 

用于第二行(来自InputStream的新FileInputStream fileInS = new FileInputStream(outputXlsFile); hwb = new HSSFWorkbook(fileInS); )FileInputStream fileInS = new FileInputStream(outputXlsFile); hwb = new HSSFWorkbook(fileInS);

其中org.apache.poi.hssf.usermodel.HSSFWorkbook来自apachePoi库

EN

回答 4

Stack Overflow用户

发布于 2016-05-12 12:49:39

无法帮助为什么会抛出异常,但我可以帮助您停止应用程序被强制关闭。

问题是链接到ExceptionInInitializerError类,这不是由java.lang.Exception派生的。相反,它是从java.lang.Error超类派生的(参见ExceptionInInitializerError declaration)。

因此,解决方案是为此类异常添加一个显式catch块,例如,如下所示:

代码语言:javascript
复制
catch(ExceptionInInitializerError e) // catch exactly this error

catch(Error e) // catch all Java errors (not exceptions!)

catch(Throwable t) // catch all Java errors and exceptions

请注意,必须将第一个和第二个捕获块添加到现有捕获数据中,而第三个捕获块可以替换它们,因为ThrowableExceptionError Java类的超类。

票数 5
EN

Stack Overflow用户

发布于 2016-05-17 10:47:57

Excel记录

在数据库术语中,记录保存有关已输入数据库的特定对象的所有信息或数据。在Excel中,记录通常组织在工作表行中,行中的每个单元格都包含一项信息或值。

基于RecordFactory代码的

http://www.docjar.com/html/api/org/apache/poi/hssf/record/RecordFactory.java.html

看起来您得到了一些与poi版本不兼容的对象(在本例中为Record)。看起来您的记录不是在RecordFactory中指定的任何类型。因此,您应该检查服务器端如何创建这些文件以及与记录相关的代码。或者,如果它们是手动创建的,您应该检查Excel或Office版本,查看它们支持哪种类型的记录,并将它们与在Android设备上使用的库进行比较。

代码语言:javascript
复制
private static final Class<? extends Record>[] recordClasses = new Class[] {
   81           ArrayRecord.class,
   82           BackupRecord.class,
   83           BlankRecord.class,
   84           BOFRecord.class,
   85           BookBoolRecord.class,
   86           BoolErrRecord.class,
   87           BottomMarginRecord.class,
   88           BoundSheetRecord.class,
   89           CalcCountRecord.class,
   90           CalcModeRecord.class,
   91           CFHeaderRecord.class,
   92           CFRuleRecord.class,
   93           ChartRecord.class,
   94           ChartTitleFormatRecord.class,
   95           CodepageRecord.class,
   96           ColumnInfoRecord.class,
   97           ContinueRecord.class,
   98           CountryRecord.class,
   99           CRNCountRecord.class,
  100           CRNRecord.class,
  101           DateWindow1904Record.class,
  102           DBCellRecord.class,
  103           DefaultColWidthRecord.class,
  104           DefaultRowHeightRecord.class,
  105           DeltaRecord.class,
  106           DimensionsRecord.class,
  107           DrawingGroupRecord.class,
  108           DrawingRecord.class,
  109           DrawingSelectionRecord.class,
  110           DSFRecord.class,
  111           DVALRecord.class,
  112           DVRecord.class,
  113           EOFRecord.class,
  114           ExtendedFormatRecord.class,
  115           ExternalNameRecord.class,
  116           ExternSheetRecord.class,
  117           ExtSSTRecord.class,
  118           FilePassRecord.class,
  119           FileSharingRecord.class,
  120           FnGroupCountRecord.class,
  121           FontRecord.class,
  122           FooterRecord.class,
  123           FormatRecord.class,
  124           FormulaRecord.class,
  125           GridsetRecord.class,
  126           GutsRecord.class,
  127           HCenterRecord.class,
  128           HeaderRecord.class,
  129           HideObjRecord.class,
  130           HorizontalPageBreakRecord.class,
  131           HyperlinkRecord.class,
  132           IndexRecord.class,
  133           InterfaceEndRecord.class,
  134           InterfaceHdrRecord.class,
  135           IterationRecord.class,
  136           LabelRecord.class,
  137           LabelSSTRecord.class,
  138           LeftMarginRecord.class,
  139           LegendRecord.class,
  140           MergeCellsRecord.class,
  141           MMSRecord.class,
  142           MulBlankRecord.class,
  143           MulRKRecord.class,
  144           NameRecord.class,
  145           NoteRecord.class,
  146           NumberRecord.class,
  147           ObjectProtectRecord.class,
  148           ObjRecord.class,
  149           PaletteRecord.class,
  150           PaneRecord.class,
  151           PasswordRecord.class,
  152           PasswordRev4Record.class,
  153           PrecisionRecord.class,
  154           PrintGridlinesRecord.class,
  155           PrintHeadersRecord.class,
  156           PrintSetupRecord.class,
  157           ProtectionRev4Record.class,
  158           ProtectRecord.class,
  159           RecalcIdRecord.class,
  160           RefModeRecord.class,
  161           RefreshAllRecord.class,
  162           RightMarginRecord.class,
  163           RKRecord.class,
  164           RowRecord.class,
  165           SaveRecalcRecord.class,
  166           ScenarioProtectRecord.class,
  167           SelectionRecord.class,
  168           SeriesRecord.class,
  169           SeriesTextRecord.class,
  170           SharedFormulaRecord.class,
  171           SSTRecord.class,
  172           StringRecord.class,
  173           StyleRecord.class,
  174           SupBookRecord.class,
  175           TabIdRecord.class,
  176           TableRecord.class,
  177           TableStylesRecord.class,
  178           TextObjectRecord.class,
  179           TopMarginRecord.class,
  180           UncalcedRecord.class,
  181           UseSelFSRecord.class,
  182           VCenterRecord.class,
  183           VerticalPageBreakRecord.class,
  184           WindowOneRecord.class,
  185           WindowProtectRecord.class,
  186           WindowTwoRecord.class,
  187           WriteAccessRecord.class,
  188           WriteProtectRecord.class,
  189           WSBoolRecord.class,
  190   
  191           // chart records
  192           BeginRecord.class,
  193           ChartFRTInfoRecord.class,
  194           ChartStartBlockRecord.class,
  195           ChartEndBlockRecord.class,
  196   // TODO ChartFormatRecord.class,
  197           ChartStartObjectRecord.class,
  198           ChartEndObjectRecord.class,
  199           CatLabRecord.class,
  200           EndRecord.class,
  201           LinkedDataRecord.class,
  202           SeriesToChartGroupRecord.class,
  203   
  204           // pivot table records
  205           DataItemRecord.class,
  206           ExtendedPivotTableViewFieldsRecord.class,
  207           PageItemRecord.class,
  208           StreamIDRecord.class,
  209           ViewDefinitionRecord.class,
  210           ViewFieldsRecord.class,
  211           ViewSourceRecord.class,
  212       };
票数 5
EN

Stack Overflow用户

发布于 2020-04-19 11:59:49

对我来说,这是由卫兵造成的。它删除/重命名了记录类,这些类是通过反射加载的。

这一规则有助于:

代码语言:javascript
复制
-keep class org.apache.poi.hssf.record.** { *; }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36404150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档