2013-06-21 68 views
1

我想將excel文件轉換爲製表符限制的txt文件(無回車)。目前我使用的腳本(在這個論壇中發現),將大量的excel文件轉換成.txt文件。將excel文件轉換爲txt文件(無回車)

劇本

' @file: xl2tab.vbs 
' @author: stephen brown - [email protected] 
' @date: 2009-Dec-10 
' 
' @description: mass convert excel files to tab-delimited files 
' 
' @usage: place in top-level directory where excel files are contained and double-click. 
'   script will recursively access all subdirectories and convert each excel file to 
'   tab delimited file. All output will be in "output" folder, which retains structure 
'   of original directories 

Dim saveDirBase 

set fso = CreateObject("Scripting.FileSystemObject") 
set shell = CreateObject("WScript.Shell") 
set objExcel = CreateObject("Excel.Application") 

set top = fso.GetFolder(shell.CurrentDirectory) 
saveDirBase = top & "\" & "output" 

Sub TraverseFolders(path) 
    set folder = fso.GetFolder(path) 

    XL2Tab(folder) 

    For each item in folder.SubFolders 
     If item.Path <> saveDirBase Then 
      Call TraverseFolders(item.Path) 
     End If 
    Next 

    set folder = Nothing 
End Sub 

Sub XL2Tab(folder) 
    Dim saveDir 
    set files = folder.Files 

    If folder.Name <> top.Name Then 
     saveDir = saveDirBase & "\" & folder.Name 
    Else 
     saveDir = saveDirBase 
    End If 

    If fso.FolderExists(saveDir) = False Then 
     fso.CreateFolder(saveDir) 
    End If 

    For each file In files 
     If file.Name <> Wscript.ScriptName Then 
      objExcel.Application.DisplayAlerts = False 
      Set objWorkbook = objExcel.Workbooks.open(folder.Path & "\" & file.Name) 
      objWorkbook.SaveAs saveDir & "\" & file.Name & ".txt", -4158  
      objWorkbook.close 
      objExcel.Application.DisplayAlerts = True 
     End If 
    Next 
End Sub 

If fso.FolderExists(saveDirBase) = False Then 
    fso.CreateFolder(saveDirBase) 
End If 

Call TraverseFolders(top) 

轉換之前我想刪除回車在每一個Excel文件。

請指導我任何人......!

+0

爲什麼要取消回車?你想在一行中合併所有的行嗎?或者你是否試圖導出一個文件在linux中使用? –

+0

我想將.txt文件上傳到Mysql數據庫中。如果它包含回車,它將不會將文件加載到數據庫。僅供參考,excel文件是手動輸入的,有些單元格值有回車。 – CarlJohn

+0

您可能會遇到導入數據的方式問題。 MySQL在文本數據中的回車沒有問題。另一方面,如果您嘗試通過連接文本和回車來構造SQL語句,則結果語句將不正確。這類似於SQL注入攻擊,其中文本數據中的無效字符導致任意語句執行。 根據您的語言,您可以使用參數化查詢將文本數據作爲數據傳遞。如果你使用的是一個工具,你應該使用一個不使用原始數據構造語句的工具。 –

回答

1

你好如果你想直接關閉工作簿 objWorkbook.close

轉換後的文件添加以下程序編寫

sub RemoveCarriage(FileN) 
Const ForReading = 1 
Const ForWriting = 2 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile(FileN, ForReading) 
strText = objFile.ReadAll 
objFile.Close 
strNewText = Replace(strText, chr(013) & chr(010), "") 
' chr(010) = line feed chr(013) = carriage return 
Set objFile = objFSO.OpenTextFile(FileN, ForWriting) 
objFile.WriteLine strNewText 
objFile.Close 
End sub 

電話裏面你的程序的for循環模塊後刪除回車

RemoveCarriage(file.Name & ".txt") 
+0

它可以很好地工作。但是具有回車符的單元格的值是雙引號。我想刪除引號。 (我不知道如何附加我的示例文件在這裏..) – CarlJohn

+1

嘗試替換函數中的「」(雙引號)爲chr(0) – xtechkid

相關問題