将excel文件转换为txt文件(不带回车符)

将excel文件转换为txt文件(不带回车符),excel,vbscript,Excel,Vbscript,我想将excel文件转换为限制制表符的txt文件(不带回车符)。目前我正在使用这个脚本(在这个论坛中可以找到),它可以将大量的excel文件转换成.txt文件 剧本是 ' @file: xl2tab.vbs ' @author: stephen brown - sb09d@fsu.edu ' @date: 2009-Dec-10 ' ' @description: mass convert excel files to tab-delimited files ' ' @u

我想将excel文件转换为限制制表符的txt文件(不带回车符)。目前我正在使用这个脚本(在这个论坛中可以找到),它可以将大量的excel文件转换成.txt文件

剧本是

    ' @file:    xl2tab.vbs
' @author:  stephen brown - sb09d@fsu.edu
' @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)
”@文件:xl2tab.vbs
“@作者:斯蒂芬·布朗-sb09d@fsu.edu
@日期:2009-12-10
' 
“@说明:将excel文件批量转换为制表符分隔的文件
'
“@用法:放置在包含excel文件的顶级目录中,然后双击。
'脚本将递归访问所有子目录,并将每个excel文件转换为
'制表符分隔的文件。所有输出都将在“output”文件夹中,该文件夹保留结构
'的原始目录
黯淡的
设置fso=CreateObject(“Scripting.FileSystemObject”)
set shell=CreateObject(“WScript.shell”)
设置objExcel=CreateObject(“Excel.Application”)
set top=fso.GetFolder(shell.CurrentDirectory)
saveDirBase=top&“\”和“output”
子遍历文件夹(路径)
set folder=fso.GetFolder(路径)
XL2Tab(文件夹)
对于folder.SubFolders中的每个项目
如果item.Path saveDirBase,则
调用遍历文件夹(item.Path)
如果结束
下一个
设置文件夹=无
端接头
子XL2Tab(文件夹)
Dim saveDir
set files=folder.files
如果文件夹名为top.Name,则为
saveDir=saveDirBase&“\”文件夹名称
其他的
saveDir=saveDirBase
如果结束
如果fso.FolderExists(saveDir)=False,则
fso.CreateFolder(saveDir)
如果结束
对于文件中的每个文件
如果文件名为Wscript.ScriptName,则
objExcel.Application.DisplayAlerts=False
设置objWorkbook=objExcel.Workbooks.open(folder.Path&“\”&file.Name)
objWorkbook.SaveAs saveDir&“\”&file.Name&“.txt”,-4158
objWorkbook.close
objExcel.Application.DisplayAlerts=True
如果结束
下一个
端接头
如果fso.FolderExists(saveDirBase)=False,则
fso.CreateFolder(saveDirBase)
如果结束
调用遍历文件夹(顶部)
在转换之前,我想删除每个excel文件中的回车符


请引导我任何人

Hi如果您试图在转换文件后删除回车符,请将以下过程添加到代码中

 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
在关闭工作簿之后,调用过程的forloop内部的模块 objWorkbook.close

 RemoveCarriage(file.Name & ".txt")

Hi如果您试图在转换文件后删除回车符,请将以下过程添加到代码中

 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
在关闭工作簿之后,调用过程的forloop内部的模块 objWorkbook.close

 RemoveCarriage(file.Name & ".txt")

为什么要删除回车符?是否要将所有行合并到一行中?或者您正在尝试导出一个用于linux的文件?我正在尝试将.txt文件上载到Mysql数据库中。如果包含回车符,则不会将文件加载到数据库。仅供参考excel文件是手动键入的,某些单元格值有回车符。您可能在导入数据的方式上有问题。MySQL对文本数据中的回车没有问题。另一方面,如果试图通过将文本与回车符连接起来来构造SQL语句,则生成的语句将不正确。这与sql注入攻击类似,在sql注入攻击中,文本数据中的无效字符会导致执行任意语句。根据您的语言,您可以使用参数化查询将文本数据作为数据传递。如果使用工具,则应使用不使用原始数据构造语句的其他工具。为什么要删除回车符?是否要将所有行合并到一行中?或者您正在尝试导出一个用于linux的文件?我正在尝试将.txt文件上载到Mysql数据库中。如果包含回车符,则不会将文件加载到数据库。仅供参考excel文件是手动键入的,某些单元格值有回车符。您可能在导入数据的方式上有问题。MySQL对文本数据中的回车没有问题。另一方面,如果试图通过将文本与回车符连接起来来构造SQL语句,则生成的语句将不正确。这与sql注入攻击类似,在sql注入攻击中,文本数据中的无效字符会导致执行任意语句。根据您的语言,您可以使用参数化查询将文本数据作为数据传递。如果你使用一个工具,你应该使用一个不同的工具,它不使用原始数据构造语句。它工作得很好。但是有回车符的单元格的值是双引号。我想删除引号。(我不知道如何在此处附加示例文件..)请尝试将替换函数中的“”(双引号)替换为chr(0)它工作得很好..但是具有回车符的单元格的值是双引号的。我想删除引号。(我不知道如何在此处附加示例文件…)尝试将替换函数中的“”(双引号)替换为chr(0)