【问题标题】:Excel: Saving query results directly to CSV fileExcel:将查询结果直接保存到 CSV 文件
【发布时间】:2013-09-30 07:24:53
【问题描述】:

我在 Excel 中有一个数据集,我必须将其中的一个分类部分保存到一个新的 csv 文件中。我已经使用 SQL 来选择需要保存的部分。我希望有人会指导我使用 SQL 将此选择保存到 csv。

SQL 给了我一个记录集,但我只想在万不得已的情况下循环遍历它。如果可能的话,我希望有一种更好的方法可以直接从查询本身中保存整个结果。

我正在寻找类似 Remou 在Want VBA in excel to read very large CSV and create output file of a small subset of the CSV 上的解决方案。但不幸的是,我无法让它发挥作用。

【问题讨论】:

  • 我正在寻找类似 Remou 在stackoverflow.com/questions/427488/… 上的解决方案。但不幸的是,我无法让它发挥作用。
  • 您可以使用您的信息编辑您的问题,而不是发表评论。
  • 我对您的问题感到困惑,您已经使用 SQL 对 Excel 文件中的数据进行子集化,大概是使用 OPENROWSET 或类似的。现在您想知道如何将其输出到 CSV 中吗?
  • 我在 Excel 中有一个数据集,我通过在包含数据的工作表上运行 SQL 查询从中选择了所需的部分。现在,我想将此部分保存为 CSV。
  • 使用SQL Server连接Excel文件?

标签: sql excel csv adodb


【解决方案1】:

假设您在 Excel VBA 中,打开了一个 ADODB,其中包含连接到数据库的 Recordset 对象,并且您希望将内容保存到 CSV(从 Excel VBA 中)。

其实最简单的还是循环遍历记录集中的记录。

但是,由于您已经排除了这种情况(无论出于何种原因),下一个选择是使用Recordset.Save <StreamObject> 方法。创建一个System.IO.Streamwriter 对象以传递给Recordset.Save

或者,如果您使用 Jet SQL,另一种方法是:

conDB.Execute "SELECT * INTO [Text;Database=" _
               & vsCSVFolder _
               & ";HDR=No;FMT=Delimited].[" _
               & vsCSVFileame _
               & "] FROM Attendance", _
                 DBExport, _
                 adCmdText Or adExecuteNoRecords

希望这会有所帮助。

【讨论】:

  • 我只排除了循环遍历记录的可能性,假设我可以执行“SELECT Blah INTO Output.csv FROM ExcelSheet ...”之类的操作。这样我就可以选择并保存在一个语句中。但正如你所说,我可能只需要循环。无论如何感谢您的帮助。
猜你喜欢
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多