在用java poi 3.8操作excel的时候,在打开一个已有excel文件时,有时候会报错:

org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: Initialisation of record 0x1D left  bytes remaining still to be read.
at org.apache.poi.hssf.record.RecordInputStream.hasNextRecord(RecordInputStream.java:)
at org.apache.poi.hssf.record.RecordFactoryInputStream.nextRecord(RecordFactoryInputStream.java:)
at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:)
  ....

网上搜索了一下,可能是excel版本比较老,或者excel控件生产的excel文件的头部和poi控件不一致。

一种办法是手动打开excel文件,然后保存或另存为。

因为要用程序处理,中间加一个手动的步骤比较烦,所以在网上找到另一个办法:先保存为csv文件,然后读取csv文件;

脚本代码如下:

if WScript.Arguments.Count <  Then
WScript.Echo "Please specify the source and the destination files. Usage: ExcelToCsv <xls/xlsx source file> <csv destination file>"
Wscript.Quit
End If csv_format = Set objFSO = CreateObject("Scripting.FileSystemObject") src_file = objFSO.GetAbsolutePathName(Wscript.Arguments.Item())
dest_file = objFSO.GetAbsolutePathName(WScript.Arguments.Item()) Dim oExcel
Set oExcel = CreateObject("Excel.Application") Dim oBook
Set oBook = oExcel.Workbooks.Open(src_file) oBook.SaveAs dest_file, csv_format oBook.Close False
oExcel.Quit

windows cmd命令行直接运行即可。

java中使用Runtime.getRuntime().exec(String execString)函数。

但是需要注意,执行cmd命令时,命令execString要加上前缀“cmd /c ”。

最好先执行一遍删除语句,确保要生成的csv文件没有存在。

LeftoverDataException.的更多相关文章

  1. LeftoverDataException,依赖包,apache license 2.0

    1. poi3.9 LeftoverDataException org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: ...

随机推荐

  1. 【LeetCode OJ】Construct Binary Tree from Inorder and Postorder Traversal

    Problem Link: https://oj.leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-trav ...

  2. 《深入浅出Node.js》第4章 异步编程

    @by Ruth92(转载请注明出处) 第4章 异步编程 Node 能够迅速成功并流行起来的原因: V8 和 异步 I/O 在性能上带来的提升: 前后端 JavaScript 编程风格一致 一.函数式 ...

  3. oracle数据库解析json格式

    随着非关系型数据大规模使用,以json格式产生的数据也出现在我所管理的Oracle数据库的CLOB字段里面,使用过程中就需要解析出指定键的值. 使用了最新版本 如果Oracle版本为12.1.0.2的 ...

  4. Fragment实现延迟加载

    import android.support.v4.app.Fragment; public abstract class BaseFragment extends Fragment { /** Fr ...

  5. CDH自己安装方式Hbase master备份方式

    hbase-daemon.sh start master 启动改命令会默认产生Hmaster 进程,等待主机宕机,zookeepr 监控

  6. readonly背景色(css)

    input{ background-color:expression(this.readOnly==true?"#EEEEEE":"#FFFFFF"); } i ...

  7. java.outOfMemory

    http://www.kdgregory.com/index.php?page=java.outOfMemory Java Platform, Standard Edition HotSpot Vir ...

  8. valgind使用错误——检测不同位目标程序

    当64位的valgrind工具测试32位的程序时,会报如下错误: ==22235== Memcheck, a memory error detector ==22235== Copyright (C) ...

  9. JS识记

    1.重新按照URL地址加载本页? window.location.reload(); 2.JS中实现命名空间一例? <script type="text/javascript" ...

  10. win7 共享问题,"您可能没有权限使用网络资源"

    原文:http://hi.baidu.com/celian521/item/81b16e7c59996e295d178946 1 打开受访者的guest权限2 开始--运行--gpedit.msc3 ...