• jxl读取excel文件异常:Unable to recognize OLE stream 的解决方法


    问题成因

    1. 使用jxl方式读取,可能只能支持xls格式的文件,对于xlsx格式就不再支持

    2. 如果是从网站导出的excel文件,有的网站比较坑,导出的并不是标准格式的excel,而是将html改扩展名为xls的“伪”excel文件。当用excel打开这类文件时,会弹窗提示其“扩展名和文件类型不匹配”是否还要打开。 而且,使用文本编辑器打开,会发现这个所谓xls文件其实是xml标签的文件。

    解决方法

    在excel中打开,另存成xls就可以。

    但当文件比较多时,可以使用excel vba批量另存

    第一种情况直接用vba批量另存即可,但第二种略有麻烦,因为会有报错弹窗,vba运行时会报错。

    下面以第二种情况为例详细说明解决步骤。

    首先,需要禁止excel的报错弹窗,否则使用vba批量另存时会出错。方法如下:

     1 1、开始 -> 运行 -> 输入regedit -> 确定
     2 2、找到注册表子项
     3 
     4 HKEY_CURRENT_USERSoftwareMicrosoftOffice12.0ExcelSecurity
     5 
     6 3、在右侧空白处点击鼠标右键,选择“新建 -> DWORD值(D)”,输入"ExtensionHardening"点击确定。
     7 4、用鼠标右键点击ExtensionHardening,然后单击“修改(M)”,在数值数据中填写"0"即可确定。
     8 5、关闭注册表编辑器,再次打开xls文件看看是不是提示是不是不见了?
     9 
    10 【拓展:ExtensionHardening设置的值的数据设置含义】
    11 0:不检查文件扩展名和文件类型并绕过该函数的警告消息。
    12 1:检查文件扩展名和文件类型。如果它们不匹配会显示警告消息。
    13 2:检查文件扩展名和文件类型。如果它们不匹配不要打开该文件。

    然后我们就可以使用vba批量另存了。

    调出vba窗口的方法:新建一个excel文件,按ALT+F11, 接着按住ALT依次按i,m键

    vba代码如下:

     1 Private Sub Workbook_Open()
     2 Application.ScreenUpdating = False
     3 Dim fp$, fn$
     4 fp = "D:	est" & ""
     5 fn = Dir(fp & "*.xls")
     6 Do While fn <> ""
     7     If fn <> ThisWorkbook.Name Then
     8         Workbooks.Open fp & fn
     9         Application.DisplayAlerts = False
    10         ActiveWorkbook.SaveAs fp & fn & "-new.xls", xlExcel8
    11         Application.DisplayAlerts = True
    12         ActiveWorkbook.Close True
    13     End If
    14     fn = Dir
    15 Loop
    16 Application.ScreenUpdating = False
    17 MsgBox "本文件夹内的所有Excel文件打开另存完毕!"
    18 End Sub

    使用时根据自身情况,修改文件夹路径。另外,在另存为的时候,这里给所有文件名加上了-new的后缀,可以根据自己需要修改。


    通过以上方法另存之后,“伪excel”文件便成为真正的excel的xls格式文件了,此时在使用java jxl来操作excel便不会有问题了。

  • 相关阅读:
    上行带宽和下行带宽是什么意思?各有什么作用?
    Windows下安装OpenSSL及其使用
    openssl的证书格式转换
    科普:TLS、SSL、HTTPS以及证书(转)
    ELK日志分析平台搭建全过程
    【周末学习】五格货栈的互联网思维:如何不花一分钱实现...
    励志语录
    highstock K线图 深入研究
    关于highstock横坐标的一些的一些说明(1)使用UTC时间
    HighCharts/Highstock使用小结,使用汉化及中文帮助文档
  • 原文地址:https://www.cnblogs.com/AI-xiaocai/p/11730179.html
Copyright © 2020-2023  润新知