傲天居士

V1

2023/04/13阅读:15主题:默认主题

wind文件特殊字符处理

从wind数据库下载的Excel文件,通常会包含特殊字符,Python在导入这类Excel文件时通常会报错。那么如何快速高效处理这一问题呢?我的思路是使用VBA (Visual Basic for Applications)

例如,我们将待处理数据放到某文件夹下,文件夹路径用fPath表示;处理后的文件放到另一文件夹下,文件夹路径用sPath表示。除了需要处理的Excel文件,路径fPath还可能包含其他文件,比如PDF文件等,这需要我们获取文件的扩展名,当文件的扩展名为".xls"或".xlsx"时才执行后续操作。

wind数据库下载的Excel文件可能包含字符"--",需要将其清空。wind数据库下载的Excel文件末尾可能包含字符"Data Source:Wind",需要清空内容。将处理后的Excel文件以原文件名保存,以UTF8编码格式保存为csv文件。完整的VBA代码如下所示:

Sub SaveToCSVs()

    Dim fDir As String

    Dim wB As Workbook

    Dim wS As Worksheet

    Dim fPath As String

    Dim sPath As String

    fPath = "..."    '待处理数据文件夹路径'

    sPath = "..."    '处理后数据保存路径'

    fDir = Dir(fPath)

    Do While (fDir <> "")

        If Right(fDir, 4) = ".xls" Or Right(fDir, 5) = ".xlsx" Then

            On Error Resume Next

            Set wB = Workbooks.Open(fPath & fDir)

            'MsgBox (wB.Name)

            For Each wS In wB.Sheets
                Name = Split(wB.Name, ".")(0)
                wS.Cells.Replace What:="--", Replacement:="", LookAt:=xlPart, SearchOrder _
                    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
                wS.Cells.Replace What:="Data Source:Wind", Replacement:="", LookAt:=xlPart, _
                    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                    ReplaceFormat:=False

                wS.SaveAs sPath & Name & ".csv", xlCSVUTF8

            Next wS

            wB.Close False

            Set wB = Nothing

        End If

        fDir = Dir

        On Error GoTo 0

    Loop

End Sub

将fPath与sPath替换成自己所需要的路径,打开空白Excel文件,按Alt F11弹出VBA窗口,双击Sheet1将代码copy到代码编辑器里面并运行即可。

分类:

人工智能

标签:

数据挖掘

作者介绍

傲天居士
V1

微信公众号:进击的王傲天