beyond compare解决特殊字符无法输出、多sheet页无法对比以及文件太大超出系统内存问题的Excel转txt脚本

' XLS_to_CSV.vbs
'
' Converts an Excel workbook to a comma-separated text file. Requires Microsoft Excel.
' Usage:
' WScript XLS_to_CSV.vbs <input file> <output file> Option Explicit ' MsoAutomationSecurity
Const msoAutomationSecurityForceDisable =
' OpenTextFile iomode
Const ForReading =
Const ForAppending =
Const TristateTrue = -
' XlFileFormat
Const xlCSV = ' Comma-separated values
Const xlUnicodeText =
' XlSheetVisibility
Const xlSheetVisible = - Dim App, AutoSec, Doc, FileSys, AppProtect
Set FileSys = CreateObject("Scripting.FileSystemObject")
If FileSys.FileExists(WScript.Arguments()) Then
FileSys.DeleteFile WScript.Arguments()
End If
Set App = CreateObject("Excel.Application")
'Set AppProtect = CreateObject("Excel.Application") On Error Resume Next App.DisplayAlerts = False
AutoSec = App.AutomationSecurity
App.AutomationSecurity = msoAutomationSecurityForceDisable
Err.Clear Dim I, J, SheetName, TgtFile, TmpFile, TmpFilenames(), Content
Set Doc = App.Workbooks.Open(WScript.Arguments(), False, True)
If Err = Then
I =
For J = To Doc.Sheets.Count
If Doc.Sheets(J).Visible = xlSheetVisible Then
I = I +
End If
Next
ReDim TmpFilenames(I - )
Set TgtFile = FileSys.OpenTextFile(WScript.Arguments(), ForAppending, True, TristateTrue)
I =
For J = To Doc.Sheets.Count
If Doc.Sheets(J).Visible = xlSheetVisible Then
SheetName = Doc.Sheets(J).Name
TgtFile.WriteLine """SHEET " & SheetName & """"
Doc.Sheets(J).Activate
TmpFilenames(I) = FileSys.GetSpecialFolder() & "\" & FileSys.GetTempName
Doc.SaveAs TmpFilenames(I), xlUnicodeText
Set TmpFile = FileSys.OpenTextFile(TmpFilenames(I), ForReading, False, TristateTrue)
'Write 写整个文件的话,写失败会导致整个文件所有内容丢失,所以采用逐行方式。
'也可以防止文件太大内存不足问题
while not TmpFile.AtEndOfStream
TgtFile.WriteLine TmpFile.ReadLine
Wend
'TgtFile.Write TmpFile.ReadAll
TmpFile.Close
If I <> UBound(TmpFilenames) Then
TgtFile.WriteLine
End If
Doc.Sheets(J).Name = SheetName
I = I +
End If
Next
TgtFile.Close
Doc.Close False
End If App.AutomationSecurity = AutoSec
App.Quit
Set App = Nothing For I = To UBound(TmpFilenames)
If FileSys.FileExists(TmpFilenames(I)) Then
FileSys.DeleteFile TmpFilenames(I)
End If
Next WScript.Sleep() '这步操作为了将关闭失败的窗口暴露置到前台交给用户手工关,应该会被上面的On Error Resume Next捕捉忽略
App.Visible = true 'If AppProtect.Workbooks.Count = 0 Then
' '保护进程可不能随便退出,用户可能正在使用
' AppProtect.Quit
'End If
'AppProtect.Visible = true
'Set AppProtect = Nothing

' XLS_to_CSV.vbs'' Converts an Excel workbook to a comma-separated text file.  Requires Microsoft Excel.' Usage:'  WScript XLS_to_CSV.vbs <input file> <output file>
Option Explicit
' MsoAutomationSecurityConst msoAutomationSecurityForceDisable = 3' OpenTextFile iomodeConst ForReading = 1Const ForAppending = 8Const TristateTrue = -1 ' XlFileFormatConst xlCSV = 6 ' Comma-separated valuesConst xlUnicodeText = 42' XlSheetVisibilityConst xlSheetVisible = -1
Dim App, AutoSec, Doc, FileSys, AppProtectSet FileSys = CreateObject("Scripting.FileSystemObject")If FileSys.FileExists(WScript.Arguments(1)) ThenFileSys.DeleteFile WScript.Arguments(1)End IfSet App = CreateObject("Excel.Application")'Set AppProtect = CreateObject("Excel.Application")
On Error Resume Next
App.DisplayAlerts = FalseAutoSec = App.AutomationSecurityApp.AutomationSecurity = msoAutomationSecurityForceDisableErr.Clear
Dim I, J, SheetName, TgtFile, TmpFile, TmpFilenames(), ContentSet Doc = App.Workbooks.Open(WScript.Arguments(0), False, True)If Err = 0 ThenI = 0For J = 1 To Doc.Sheets.CountIf Doc.Sheets(J).Visible = xlSheetVisible ThenI = I + 1End IfNextReDim TmpFilenames(I - 1)Set TgtFile = FileSys.OpenTextFile(WScript.Arguments(1), ForAppending, True, TristateTrue)I = 0For J = 1 To Doc.Sheets.CountIf Doc.Sheets(J).Visible = xlSheetVisible ThenSheetName = Doc.Sheets(J).NameTgtFile.WriteLine """SHEET " & SheetName & """"Doc.Sheets(J).ActivateTmpFilenames(I) = FileSys.GetSpecialFolder(2) & "\" & FileSys.GetTempNameDoc.SaveAs TmpFilenames(I), xlUnicodeTextSet TmpFile = FileSys.OpenTextFile(TmpFilenames(I), ForReading, False, TristateTrue)'Write 写整个文件的话,写失败会导致整个文件所有内容丢失,所以采用逐行方式。'也可以防止文件太大内存不足问题while not TmpFile.AtEndOfStream            TgtFile.WriteLine TmpFile.ReadLine            Wend    'TgtFile.Write TmpFile.ReadAllTmpFile.CloseIf I <> UBound(TmpFilenames) ThenTgtFile.WriteLineEnd IfDoc.Sheets(J).Name = SheetNameI = I + 1End IfNextTgtFile.CloseDoc.Close FalseEnd If
App.AutomationSecurity = AutoSecApp.QuitSet App = Nothing
For I = 0 To UBound(TmpFilenames)If FileSys.FileExists(TmpFilenames(I)) ThenFileSys.DeleteFile TmpFilenames(I)End IfNext
WScript.Sleep(1000)
'这步操作为了将关闭失败的窗口暴露置到前台交给用户手工关,应该会被上面的On Error Resume Next捕捉忽略App.Visible = true
'If AppProtect.Workbooks.Count = 0 Then'    '保护进程可不能随便退出,用户可能正在使用        '    AppProtect.Quit'End If'AppProtect.Visible = true'Set AppProtect = Nothing

beyond compare解决特殊字符无法输出、多sheet页无法对比以及文件太大超出系统内存问题的Excel转txt脚本的更多相关文章

  1. Mysql文件太大导入失败解决办法总结

    Mysql文件太大导入失败解决办法总结 在使用phpmyadmin导入数据库的时候可能会碰到由于数据库文件太大而无法导入的问题! 英文提示如下:File exceeds the maximum all ...

  2. 解决asp.net上传文件时文件太大导致的错误

    即使在web.config中添加了节点和设置依然是不行的,还是报文件太大的错误, <httpModules>       <add name="UploadHttpModu ...

  3. 解决sql脚本文件太大无法打开的问题

    as we known,sql数据库高版本向低版本还原是不太可能但是又经常会碰到的事,今天实测了一种方法 步骤:任务—>生成脚本—> 下一步->高级,选择数据库版本和编写脚本数据类型 ...

  4. SQL数据库从高版本到低版本的迁移,同时解决sql脚本文件太大无法打开的尴尬问题

    as we known,sql数据库高版本向低版本还原是不太可能但是又经常会碰到的事,今天实测了一种方法 步骤:任务—>生成脚本—> 下一步->高级,选择数据库版本和编写脚本数据类型 ...

  5. sqlserver日志文件太大解决方法

    SQL Server 的事务日志意外增大或充满的处理方法 事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf. 在 SQL Server 7.0 和 S ...

  6. 解决PHP下载文件时因时文件太大而报404错误

    set_time_limit(0); ini_set('memory_limit', '512M'); header('Content-Type: application/octet-stream') ...

  7. Git远程推送文件太大的error解决

    error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errfno 10054 方法1: 改成ssh推送 方法2: 把推送的缓 ...

  8. 微软BI 之SSIS 系列 - 通过 OLE DB 连接访问 Excel 2013 以及对不同 Sheet 页的数据处理

    文章更新历史 2014年9月7日 - 加入了部分更新内容,在文章最后提到了关于不同 Office Excel 版本间的连接问题. 开篇介绍 这篇文章主要总结在 SSIS 中访问和处理 Excel 数据 ...

  9. EBS 多sheet页Excel动态报表开发过程

    http://zhangzhongjie.iteye.com/blog/1779891 .前言本文讲述的多Sheet页EXCEL报表开发方式和开发HTML,PDF这类报表的方法大致是一致的,唯一不同的 ...

随机推荐

  1. MySQL NULL--三值逻辑(Three Value Logic)

    三值逻辑(Three Value Logic) 在关系型数据库中,由于NULL值的存在,导致逻辑表达式存在三种值:TRUE/FALSE/UNKNOW. SELECT '=NULL AS C1, ' A ...

  2. bug集锦------持续但不定期 更新

    对于个人而言:这个错误集锦是很有必要的. 为了避免误导他人,其中个人想法:用 紫色加粗 标注. 1.springboot端口冲突: Protocol handler start failed2.spr ...

  3. Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)-C. Magic Grid-构造

    Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)-C. Magic Grid-构造 [Problem Descripti ...

  4. Codeforces D. Intercity Travelling(区间组合)

    题目描述: D. Intercity Travelling time limit per test 1.5 seconds memory limit per test 256 megabytes in ...

  5. 项目Alpha冲刺--10/10

    项目Alpha冲刺--10/10 作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Alpha冲刺 团队名称 基于云的胜利冲锋队 项目名称 云评:高校学生成绩综 ...

  6. element ui 中的 resetFields() 报错'resetFields' of undefined

    每次做各种form表单时,首先要注意的是初始化,但是刚开始若没有仔细看文档,则会自己写个方法将数据设置为空,但是这样就会出现一个问题,表单内存在各种验证,假如是一个弹框内有form表单,弹框出现就执行 ...

  7. CodeForces - 24D :Broken robot (DP+三对角矩阵高斯消元 随机)

    pro:给定N*M的矩阵,以及初始玩家位置. 规定玩家每次会等概率的向左走,向右走,向下走,原地不动,问走到最后一行的期望.保留4位小数. sol:可以列出方程,高斯消元即可,发现是三角矩阵,O(N* ...

  8. Tortoise Git 安装 及报错处理

    TortoiseGit安装详解: https://www.cnblogs.com/xinlj/p/5978730.html Tortoise Git 错误处理 disconnected no supp ...

  9. 7、Python变量流程基础(变量、赋值、格式化、运算符、流程控制、range()函数)

    一.执行Python程序的两种方式 1.交互式 在终端内输入“python3”,然后输入python代码 2.命令行式 在终端内输入“python3 文本文件路径” 二.变量 1.变量的组成 Pyth ...

  10. 【AirTest自学】AirTest工具介绍和入门学习(一)

    ==================================================================================================== ...