【问题标题】:Exporting whole Excel file as CSV将整个 Excel 文件导出为 CSV
【发布时间】:2016-11-02 09:07:58
【问题描述】:

在我的场景中,有一些我会经常更新的 excel 文件(每个文件可能不止一张),并且几乎同样频繁地将哪些内容导入到 PostgreSQL 数据库中.这个数据库管理器不能直接使用.xlsx 文件,所以我需要先将.xlsx 导出为.csv,然后将.csv 导入数据库。

我已经研究了有关该主题的不同问题,但我认为它们中的任何一个都不能真正解决我的问题。我不是在寻找可以解决这种情况的简单代码(尽管那会很棒),而是寻找解决方案的一般方向(VBA、Java/C#/Python 程序、.bat 可执行文件... )。

欢迎任何帮助。

旁注:

  1. 我没有决定使用 PostgreSQL 作为 DBM,我知道还有其他 DBM 可以很好地处理 excel 文件。
  2. 我还没有学习 VBA,但如果需要,我可以以此为借口开始学习。
  3. 我知道FDW 的存在,但我还没有找到.xlsx 的任何信息(知道Excel 的使用范围有多大,这真是令人惊讶)。为.xlsx 文件格式编写一个是一种选择,但我真的很想避免这种情况,因为我的时间可能有点短,而且我猜这需要很多时间。

【问题讨论】:

  • csv 文件没有多张纸。您必须为每个 xlsx 工作表创建 1 个文件。
  • 我知道
  • 我可以帮助您在 python 的 csv 列表中转换 xlsx。但你的问题实在是太笼统了。
  • 你太好了,只要知道可以这样做就足够了。如果我最后遵循这个选项,我会用我开发的代码发布一个答案。另外,我也认为这个问题的范围可能也太广了,但是这个程序员社区在专业知识和乐于助人方面是最好的,同时也能快速给出答案。因此,我希望像您一样乐于助人的人能为我节省无数分钟/小时的研究时间,并为我提供一个总体方向(这正是我所需要的)。这个问题最终会从头到尾得到解决。太好了,嗯?

标签: python excel vba postgresql csv


【解决方案1】:

因此,使用 VBA,您可以执行以下操作:

  • 遍历 Excel 应用程序中的每个工作表。
  • 将其保存为 CSV 文件。

这样的事情就可以了:

Sub vba_code_to_convert_excel_to_csv()

    Dim ws                  As Worksheet
    Dim l_counter           As Long

    For Each ws In ThisWorkbook.Sheets
        l_counter = l_counter + 1
        ws.Activate
        ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\new_file" & l_counter & ".csv", FileFormat:=xlCSV, CreateBackup:=False
    Next ws

End Sub

重要编辑:

确保在使用代码之前进行保存。因为它会更改 Excel 选项卡的名称。在这里阅读更多:http://windowssecrets.com/forums/showthread.php/33489-Sheet-name-changes-when-saved-in-CSV-format-(XL2000)

【讨论】:

  • 这不起作用 - 它只会以不同的名称多次保存当前活动的工作表。此外,它不处理将.csv 文件放入数据库的问题。
  • 没错,我忘了通过循环激活工作表。现在我们应该在每张纸上得到一个不同的 csv 文件。从那里开始,它如何进入数据库是另一个问题。
  • 谢谢,@Feillen :)
  • 这看起来很漂亮!谢谢两位的意见。我将单独处理 DB 导入,但这是向前迈出的伟大 一步 :)
  • @Feillen,请确保在使用代码之前进行保存。因为它会更改 Excel 选项卡的名称。在这里阅读更多:windowssecrets.com/forums/showthread.php/…
猜你喜欢
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-15
  • 1970-01-01
  • 2013-07-27
  • 2021-12-11
相关资源
最近更新 更多