
傲天居士
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
微信公众号:进击的王傲天