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 = 3
‘ OpenTextFile iomode
Const ForReading = 1
Const ForAppending = 8
Const TristateTrue = -1
‘ XlFileFormat
Const xlCSV = 6 ‘ Comma-separated values
Const xlUnicodeText = 42
‘ XlSheetVisibility
Const xlSheetVisible = -1

Dim App, AutoSec, Doc, FileSys, AppProtect
Set FileSys = CreateObject("Scripting.FileSystemObject")
If FileSys.FileExists(WScript.Arguments(1)) Then
    FileSys.DeleteFile WScript.Arguments(1)
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(0), False, True)
If Err = 0 Then
    I = 0
    For J = 1 To Doc.Sheets.Count
        If Doc.Sheets(J).Visible = xlSheetVisible Then
            I = I + 1
        End If
    Next
    ReDim TmpFilenames(I - 1)
    Set TgtFile = FileSys.OpenTextFile(WScript.Arguments(1), ForAppending, True, TristateTrue)
    I = 0
    For J = 1 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(2) & "\" & 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 + 1
        End If
    Next
    TgtFile.Close
    Doc.Close False
End If

App.AutomationSecurity = AutoSec
App.Quit
Set App = Nothing

For I = 0 To UBound(TmpFilenames)
    If FileSys.FileExists(TmpFilenames(I)) Then
        FileSys.DeleteFile TmpFilenames(I)
    End If
Next

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

‘ 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

原文地址:https://www.cnblogs.com/dongzhiquan/p/beyond_excel_convert_script.html

时间: 2024-08-01 13:36:47

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

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

在使用phpmyadmin导入数据库的时候可能会碰到由于数据库文件太大而无法导入的问题! 英文提示如下:File exceeds the maximum allowed size 如果正在使用的主机可以自定义php.ini的话,就可以通过直接修改这个文件来解决,即通过通过编辑php.ini文件来重新设定上传文件大小的限定,具体操作步骤: 第一步:打开php.ini,找到 upload_max_filesize . memory_limit . post_max_size 这三个参数! 他们所代表

一键解决pdf文件太大如何变小的难题

PDF文件是适用于文件下发,阅读等便捷的电子文件格式,在传输发送的过程中,我们PDF文件较大的情况下,就需要将PDF文件压缩,那么PDF文件太大如何变小呢?对于PDF文件压缩不是太了解的用户可能就想不到好的办法解决,本文将教大家一键解决pdf文件太大如何变小的难题. 1.首先,我们需要了解的是PDF文件进行压缩,我们这里是需要借助到一款叫作迅捷PDF转换器的软件,所以,现在需要做的就是打开浏览器,在电脑上下载安装.软件下载:pdf压缩器http://www.newasp.net/soft/213

怎么解决apache日志文件太大的问题

原文地址:http://un173.blog.51cto.com/8263566/1598346 管理apache服务器有些年头,虽然最近几年被nginx抢了不少风头,但我依然钟爱apache. 喜欢它强劲的并发处理能力,以及forker与worker模式间自由选择的快感,哈哈. 熟悉linux下apache运维的朋友,多少都会遇到过apache日志文件太大的问题,网站刚上线时不会在意到这个问题,因为流量小,自然error.log与access.log文件内容也就少,文件容量不大,因此,配置时也

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

as we known,sql数据库高版本向低版本还原是不太可能但是又经常会碰到的事,今天实测了一种方法 步骤:任务->生成脚本-> 下一步->高级,选择数据库版本和编写脚本数据类型为架构和数据,可以保留数据. 继续下一步完成. 最终得到一个巨大的sql脚本文件 ->接下来首先要在低版本数据库中新建一个目标数据库,然后运行sql脚本文件即可 一般的sql文件我们都是直接在SqlServer的查询窗口直接执行的,但是这个巨大的sql文件实在是太大了,SqlServer甚至是记事本都无

sqlserver日志文件太大解决方法

SQL Server 的事务日志意外增大或充满的处理方法 事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf. 在 SQL Server 7.0 和 SQL Server 2000 中,如果设置了自动增长功能,事务日志文件将会自动扩展. 一般情况下,在能够容纳两次事务日志截断之间发生的最大数量的事务时,事务日志的大小是稳定的,事务日志截断由检查点或者事务日志备份触发. 然而,在某些情况下,事务日志可能会变得非常大,以致用尽空间或变满.通常,在事务日

git文件太大上传不了解决办法

git命令行 git提交失败的解决办法 1 提交后提示 fatal: recursion detected in die handler 问题原因: 问题原因是http.postBuffer默认上限为1M所致.在git的配置里将http.postBuffer变量改大一些即可,比如将上限设为500M: git config --global http.postBuffer 524288000 在哪里执行以上命令呢? 打开git bash命令行工具. 注意要加上--global.网上很多资料都没加这

MySQL ibdata1文件太大的解决办法

在MySQL数据库中,如果不指定innodb_file_per_table=1参数单独保存每个表的数据,MySQL的数据都会存放在ibdata1文件里,时间久了这个文件就会变的非常大. 下面是参考网上的一些资料,把数据分别保存在各数据库子目录里的方法,这样新产生的ibdata1文件就不会太大了.下面是在Ubuntu 14.04.12 x64,MySQL5.5上对ibdata1进行瘦身,操作过程的整理. 1.备份数据库中的数据. mysqldump -u root -p --extended-in

phpMyAdmin导入文件过大超出限制的解决

phpMyAdmin从计算机导入文件的限制为128M,当要导入的文件超过了这个限制的时候,就需要设置一下,有两个方法, 一 . 从网站服务器上传文件夹 ImportSQLFile/ 中选择.具体步骤: 2016-07-06在phpmyadmin文件夹下新建文件夹,文件夹名为ImportSQLFile: 将需要上传的sql文件放置到ImportSQLFile文件夹下: 打开phpMyadmin,选择需要导入的数据库名,选择从网站服务器上传文件夹 ImportSQLFile/ 中选择,选择要上传的s

样式文件太大太多,首次加载页面后,样式错乱的解决办法

1.js控制页面只刷新一次 window.onload(){ if(location.href.indexOf('#reloaded')==-1){ location.href=location.href+"#reloaded"; location.reload(); } } 2.第二种只刷新一次$(function(){ if($.cookie("refresh")!="no"){ setTimeout(function(){ window.l