您可以从外部(动态).csv文件中提取Excel数据吗?


14

我有一个脚本,可以将计算机的许多性能指标输出到.csv文件中。Excel对标准偏差等进行基本统计检查。

我知道您可以将.csv文件导入Excel,但是我想做的是将数据动态读取到Excel模型中,而不必每次都重新导入和重新建模。

有没有一种方法可以让单元格/表引用外部.csv而不每次都重新导入?


文件更新后,它是追加还是覆盖?
本杰明·安德森

完全覆盖。但是我想我可以对其进行修改以使其工作。
编辑者

Answers:


5

最简单的方法是将数据导入Access或SQL Express,然后在Excel中使用数据连接功能。初始设置后,您需要做的就是单击全部刷新,它将提取数据并重新计算值。

您可以使用数据连接功能直接导入CSV,但是它将想要拉入数据并将其添加到工作表中。只要将其导入到辅助工作表中,并将公式和计算结果留在另一工作表上,这将起作用。当您单击“使用此方法刷新”时,它将询问文件名,然后使用与最初使用的设置相同的设置重新导入它。对于大型数据集,此方法通常也较慢或不可用。


2
使用数据连接功能,您可以禁用文件名提示(向导末尾有一个复选框)。此时,您还可以将其设置为每X分钟自动刷新一次。适用于小型数据集。
Martin McNulty

4

视窗

您也可以使用Power Query,这是一种与@ andy-lynch的answer相同的灵活方式。

  1. 得到它 在这里
  2. 安装它
  3. 转到新的“ Power Query”功能区选项卡。
  4. 单击“来自文件”或“来自Web”,然后按照屏幕上的说明进行操作。

请参见下面的gif动画预览。

在此处输入图片说明

苹果系统

Power Query不适用于MacOS。MacOS上的Excel“来自文本”打开文件对话框也不接受URL(至少在版本15.33中)。

要创建这样的连接,首先必须构建一个Web查询文件(.iqy),如本指南中所述,然后使用“数据->获取外部数据->运行保存的查询”菜单命令将其导入。


我同意-在Excel 2016+中,我知道这是默认设置(如Get and Transform
Andy Lynch

2

问题是“如何引用.csv文件中的数据?

我的方法是剪切.csv文件,并使用包含VBA和ADO的宏,该宏接收数据并将其直接放入Excel中的工作表中。任何符合ODBC的数据库都可以作为您的来源。

Excel 2010具有数据>>获取外部数据-来自各种数据源。但是,我更喜欢编写自己的代码,因为我拥有绝对的控制权,并且可以在宏中格式化结果。只需单击一个按钮即可刷新,您可以执行任何操作。

如果您告诉我指标来自哪个数据库,我可以告诉您一些细节。

PS在“数据” >>“获取外部数据” >>“现有连接” >>中查看驱动程序列表。然后,您必须知道要使用的源数据库和驱动程序。您可以通过hotmail在climbbeacham给我发送电子邮件,以获取更多详细信息。


2

一种简单的方法(由于这篇文章)是,就像导入已经下载的文本文件一样(例如Data > Import Text File)导入数据,但是不要输入文件名,而是粘贴CSV文件的URL。


这很有用。如果远程文件发生更改,我想它不会动态更新。
编辑者

没错-尽管在打开时每隔<x>分钟刷新一次的常规选项仍然适用。
安迪·林奇


0

使用VBS宏或脚本将看起来像(Excel2010及更高版本):

Sub Macro1()
'
' Macro1 Macro
'

'
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;\\Path\To\CSV\Folder\CSV_Data.csv" _
        , Destination:=Range("$A$1"))
        .CommandType = 0
        .Name = "Book1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 437
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

此宏实际上是由Excel 2013宏记录器记录的。 您可以创建一个触发该宏的按钮。MS Excel 2013中工具栏中的宏记录器

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.