readxl读取xls格式Excel可能出现数据混乱
R的readxl是个很棒的XLS和XLSX解析包,但最近发现它读取XLS(MicroSoft Excel 97-2003工作表)格式的时候,会出现数据混乱的情况,如果转为XLSX后则没有这个问题了,下面是找到的一个VBA,可以批量把XLS格式转为XLSX,方便readxl读取,
Sub ChangeFileFormat() Dim strCurrentFileExt As String Dim strNewFileExt As String Dim objFSO As Object Dim objFolder As Object Dim objFile As Object Dim xlFile As Workbook Dim strNewName As String Dim strFolderPath As String strCurrentFileExt = ".xls" strNewFileExt = ".xlsx" strFolderPath = "C:\Users\Scorpio\Desktop\New folder" If Right(strFolderPath, 1) <> "\" Then strFolderPath = strFolderPath & "\" End If Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.getfolder(strFolderPath) For Each objFile In objFolder.Files strNewName = objFile.Name If Right(strNewName, Len(strCurrentFileExt)) = strCurrentFileExt Then Set xlFile = Workbooks.Open(objFile.Path, , True) strNewName = Replace(strNewName, strCurrentFileExt, strNewFileExt) Application.DisplayAlerts = False Select Case strNewFileExt Case ".xlsx" xlFile.SaveAs strFolderPath & strNewName, XlFileFormat.xlOpenXMLWorkbook Case ".xlsm" xlFile.SaveAs strFolderPath & strNewName, XlFileFormat.xlOpenXMLWorkbookMacroEnabled End Select xlFile.Close Application.DisplayAlerts = True End If Next objFile ClearMemory: strCurrentFileExt = vbNullString strNewFileExt = vbNullString Set objFSO = Nothing Set objFolder = Nothing Set objFile = Nothing Set xlFile = Nothing strNewName = vbNullString strFolderPath = vbNullString End Sub