前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >批量合并Excel数据时“外部表不是预期格式”或“文件包含损坏数据”的两种情况

批量合并Excel数据时“外部表不是预期格式”或“文件包含损坏数据”的两种情况

作者头像
大海Power
发布2021-08-31 10:38:34
13.4K0
发布2021-08-31 10:38:34
举报
文章被收录于专栏:用户8950297的专栏

很多朋友在用Power Query合并(汇总)Excel数据时,碰到过“DataFormat.Error:外部表不是预期格式”或“DataFormat.Error:文件包含损坏的数据”的错误提示:

将数据从PQ加载到Excel时可能也会出现类似下面的提示:

针对这两种错误,主要是由以下两种情况导致的:

1、要合并汇总的数据是从某些专业平台或系统导出的xls(2003版以前)格式Excel文件;

2、文件夹中包含了一些临时的缓存文件。

- 情况1:xls文件 -

首先要说明的是,并不是Power Query不支持xls格式Excel文件的读取,只是某些专业平台或系统导出的xls文件读取会出错而已

当你用PQ接入某个xls文件出现错误时,基本都是这种原因。解决的办法也很简单,用Excel打开该文件,然后另存为xlsx格式即可。

当然,这种情况下,往往需要导入的文件都是一大批的,一个个打开另存可能比较麻烦,为了方便,可以收藏一段VBA代码用于自动化处理:

代码语言:javascript
复制
 Sub save_xls_to_xlsx()
    '作者:大海
    '日期:2019-11-9
    '公众号:Excel到PowerBI
    
    Dim folder As FileDialog
    Dim f, fdi As FileDialogSelectedItems
    Dim i As Integer
    Dim file_count As Integer
    Dim xls_file As String
    Dim xlsx_file As String
    Dim wb As Workbook
    
    Set folder = Application.FileDialog(msoFileDialogFolderPicker)
    folder.Show
    
    Set fdi = folder.SelectedItems
    
    If fdi.Count = 0 Then
        MsgBox "未选择任何文件夹。"
        Exit Sub
    End If
   
    For Each f In fdi
        xls_file = Dir(f & "\*.xls")
        file_count = 0
        Do
            If Right(xls_file, 4) = ".xls" Then
                Set wb = Workbooks.Open(f & "\" & xls_file)
                Application.ScreenUpdating = False
                xlsx_file = f & "\" & xls_file & "x"
                ActiveWorkbook.SaveAs Filename:=xlsx_file, FileFormat:=xlWorkbookDefault, CreateBackup:=False
                wb.Close savechanges:=False
                Kill f & "\" & xls_file '若不想删除原文件,可注释掉本行
                file_count = file_count + 1
                Application.ScreenUpdating = True
            End If
            xls_file = Dir
        Loop Until xls_file = ""
    Next
    MsgBox "该文件夹下的xls文件(共" & CStr(file_count) & "个)已全部转换为xlsx文件。谢谢您对大海的支持!"
    
End Sub

- 情况2:临时缓存文件 -

这种情况处理比较简单,在从文件夹导入数据时,就能看到(文件名开头为“~$”),这种文件产生的原因有很多,比如文件正在打开的过程中,或者出现操作错误没有正常退出等等:

这些文件通常都是不需要的,所以,PQ从文件夹读入文件后,即可直接通过筛选(文件名开头不是“~$"的工作簿)的方式去掉:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel到PowerBI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档