python - 如何将Excel工作簿中的所有工作表保存为一个文本文件?

标签 python excel vba text

我有一个包含多个工作表的 Excel 工作簿。我想将所有工作表的文本导出到一个文本文件。我见过多种解决方案(主要使用 VBA - 下面的示例)将每个工作表导出为其自己的文本文件,但尚未找到一种将所有工作表导出为一个文本文件的解决方案。关于如何使用 VBA(或者 Python)完成此任务有什么想法吗?

Sub ExportSheetsToText()
Dim xWs As Worksheet
Dim xTextFile As String
For Each xWs In Application.ActiveWorkbook.Worksheets
    xWs.Copy
    xTextFile = CurDir & "\" & xWs.Name & ".txt"
    Application.ActiveWorkbook.SaveAs Filename:=xTextFile, FileFormat:=xlText
    Application.ActiveWorkbook.Saved = True
    Application.ActiveWorkbook.Close
Next
End Sub

最佳答案

生成这些文本文件后,您可以使用 Windows 命令提示符轻松将多个文本文件合并为一个。例如,假设您的所有文件名都有某种模式。即 *.txt 但我建议您在名称中添加一些额外的模式,例如 temp_something.txt:

xTextFile = CurDir & "\temp_" & xWs.Name & ".txt"

然后在命令提示符下将它们合并到一个文本文件中,如下所示:

type temp_*.txt >> mergedFile.txt

copy temp_*.txt mergedFile.txt

如果您想完全自动化VBA例程内部的操作,您可以将命令集成到其中,如下所示:

For Each xWs In Application.ActiveWorkbook.Worksheets
    xWs.Copy
    xTextFile = CurDir & "\temp_" & xWs.Name & ".txt"
    Application.ActiveWorkbook.SaveAs Filename:=xTextFile, FileFormat:=xlText
    Application.ActiveWorkbook.Saved = True
    Application.ActiveWorkbook.Close
Next

Dim shl As Object: Set shl = CreateObject("WScript.shell")
shl.CurrentDirectory = CurDir
shl.Run "cmd /C copy temp_*.txt " & ThisWorkbook.name & ".txt" ' merge the temporary text files

shl.Run "cmd /C del temp_*.txt" ' clean up the temporary text files

最后,您将获得一个与工作簿同名且扩展名为 .txt 的文本文件。

关于python - 如何将Excel工作簿中的所有工作表保存为一个文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41732065/

相关文章:

python - 如何执行单个替换,然后使用正则表达式捕获?

excel - 如何检查当前单元格是否在表格的第一行?

vba - VBA 代码中出现内存不足错误

excel - 仅将二维数组的某些元素/列写回工作表

python - 在 GAE 中使用 matplotlib

python - 默认的 nltk 词性标记集是什么?

java - 使用 apache poi 创建超链接

vba - 如何忽略 Excel 宏中根据条件删除所有行的第一行?

excel - VBA过滤唯一值并将其复制到新工作表

python - 如何在 Matplotlib 中编写自己的 LaTeX 序言?