Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PowerPivot导出数据_R_Excel_Powerpivot - Fatal编程技术网

从PowerPivot导出数据

从PowerPivot导出数据,r,excel,powerpivot,R,Excel,Powerpivot,我有一个巨大的PowerPivot表(839726行),它太大了,无法将粘贴复制到常规的电子表格中。我尝试过复制它,然后使用行data=read.table(“剪贴板”,header=T)将它直接读入R,但这两种方法都不起作用。我想知道是否有一些附加组件或方法可以用于将PowerPivot表导出为CSV或.xlsx?非常感谢 选择所有PowerPivot表 复制数据 过去文本文件中的数据(例如PPtoR.txt) 使用制表符分隔符读取R中的文本文件:Read.table(“PPtoR.txt”,

我有一个巨大的PowerPivot表(839726行),它太大了,无法将粘贴复制到常规的电子表格中。我尝试过复制它,然后使用行
data=read.table(“剪贴板”,header=T)
将它直接读入R,但这两种方法都不起作用。我想知道是否有一些附加组件或方法可以用于将PowerPivot表导出为CSV或.xlsx?非常感谢
  • 选择所有PowerPivot表
  • 复制数据
  • 过去文本文件中的数据(例如PPtoR.txt)
  • 使用制表符分隔符读取R中的文本文件:Read.table(“PPtoR.txt”,sep=“\t”…)

  • 要将PowerPivot表导入Excel,请执行以下操作:

  • 基于PowerPivot数据创建数据透视表
  • 确保您创建的透视表在“值”区域中有内容,但在“过滤器”、“列”或“行”区域中没有内容
  • 转到数据>连接
  • 选择数据模型并单击“属性”
  • 在“使用情况”选项卡中,OLAP钻取设置要检索的最大记录数(最大为9999999条记录)
  • 双击透视表中的“度量值”区域进行钻取 另一个解决办法是

    • 将Powerpivot模型导入PowerBi桌面
    • 使用Powershell脚本从PowerBI桌面导出结果
    这里有一个例子


    下面是一个纯Excel/VBA解决方案。这是根据使用FileSystemObject并一次向文件写入1k行的代码改编的。您需要添加Microsoft ActiveX数据对象库和Microsoft脚本运行时作为参考

    Option Explicit
    
    Public FSO As New FileSystemObject
    
    Public Sub ExportToCsv()
    
        Dim wbTarget As Workbook
        Dim ws As Worksheet
        Dim rs As Object
        Dim sQuery As String
    
        'Suppress alerts and screen updates
        With Application
            .ScreenUpdating = False
            .DisplayAlerts = False
        End With
    
        'Bind to active workbook
        Set wbTarget = ActiveWorkbook
    
        Err.Clear
    
        On Error GoTo ErrHandler
    
        'Make sure the model is loaded
        wbTarget.Model.Initialize
    
        'Send query to the model
        sQuery = "EVALUATE <Query>"
        Set rs = CreateObject("ADODB.Recordset")
        rs.Open sQuery, wbTarget.Model.DataModelConnection.ModelConnection.ADOConnection
        Dim CSVData As String
        Call WriteRecordsetToCSV(rs, "<ExportPath>", True)
    
        rs.Close
        Set rs = Nothing
    
    ExitPoint:
        With Application
            .ScreenUpdating = True
            .DisplayAlerts = True
        End With
        Set rs = Nothing
        Exit Sub
    
    ErrHandler:
        MsgBox "An error occured - " & Err.Description, vbOKOnly
        Resume ExitPoint
    End Sub
    
    
    
    Public Sub WriteRecordsetToCSV(rsData As ADODB.Recordset, _
            FileName As String, _
            Optional ShowColumnNames As Boolean = True, _
            Optional NULLStr As String = "")
        'Function returns a string to be saved as .CSV file
        'Option: save column titles
    
        Dim TxtStr As TextStream
        Dim K As Long, CSVData As String
    
        'Open file
        Set TxtStr = FSO.CreateTextFile(FileName, True, True)
    
        If ShowColumnNames Then
            For K = 0 To rsData.Fields.Count - 1
                CSVData = CSVData & ",""" & rsData.Fields(K).Name & """"
            Next K
    
            CSVData = Mid(CSVData, 2) & vbNewLine
            TxtStr.Write CSVData
        End If
    
        Do While rsData.EOF = False
            CSVData = """" & rsData.GetString(adClipString, 1000, """,""", """" & vbNewLine & """", NULLStr)
            CSVData = Left(CSVData, Len(CSVData) - Iif(rsData.EOF, 3, 2))
            TxtStr.Write CSVData
        Loop
    
        TxtStr.Close
    
    End Sub
    
    选项显式
    作为新文件系统对象的公共FSO
    公共子出口目录
    将目标设置为工作簿
    将ws设置为工作表
    将遥感器作为对象
    像细绳一样模糊
    '抑制警报和屏幕更新
    应用
    .ScreenUpdate=False
    .DisplayAlerts=False
    以
    '绑定到活动工作簿
    设置wbTarget=ActiveWorkbook
    呃,明白了
    关于错误转到错误处理程序
    '确保已加载模型
    wbTarget.Model.Initialize
    '将查询发送到模型
    squry=“评估”
    Set rs=CreateObject(“ADODB.Recordset”)
    rs.打开sQuery,wbTarget.Model.DataModelConnection.ModelConnection.ADOConnection
    将CSVData设置为字符串
    调用WriteRecordsetToCSV(rs,“,True)
    rs.Close
    设置rs=无
    出口点:
    应用
    .ScreenUpdate=True
    .DisplayAlerts=True
    以
    设置rs=无
    出口接头
    错误处理程序:
    MsgBox“发生错误-”&错误说明,仅vbOKOnly
    恢复退出点
    端接头
    公共子写器RecordSetToCSV(rsData作为ADODB.Recordset_
    文件名为字符串_
    可选的ShowColumnNames为Boolean=True_
    可选NULLStr作为字符串=”)
    '函数返回要另存为.CSV文件的字符串
    '选项:保存列标题
    Dim TxtStr作为TextStream
    Dim K为长,CSVData为字符串
    '打开文件
    设置TxtStr=FSO.CreateTextFile(文件名,True,True)
    如果你想知道你的名字
    对于K=0到rsData.Fields.Count-1
    CSVData=CSVData&“,”&rsData.Fields(K).Name&“
    下一个K
    CSVData=Mid(CSVData,2)和vbNewLine
    TxtStr.Write CSVData
    如果结束
    当rsData.EOF=False时执行
    CSVData=“”&rsData.GetString(adClipString,1000,“”,“”,“”,“”,“”&vbNewLine&“”,NULLStr)
    CSVData=Left(CSVData,Len(CSVData)-Iif(rsData.EOF,3,2))
    TxtStr.Write CSVData
    环
    TxtStr.关闭
    端接头
    
    以下是一种可爱的低技术方式:

    我认为Excel 2016的流程有点不同。如果您有Excel 2016,只需转到“数据”选项卡,获取外部数据,然后查看现有连接(并在表下查看)

    另一件重要的事情是单击取消链接(在表工具-设计-外部表数据下)。这会将其与源数据解除链接,因此它实际上只是一个导出


    如果愿意,您可以将该数据复制到另一个工作簿。

    为什么不直接“另存为…”/csv?@BondedDust,因为这样它就不会保存PowerPivot数据,而是保存工作表中的数据。我必须先从PowerPivot窗口将其保存到工作表中,然后才能将其保存为csv。如何将仅包含“值”的特殊内容复制并粘贴到新工作表中,然后将其保存为csv。请看以下内容:如果它能正常工作,请发回,因为它可能会带来很大影响:-)让我指出,“Excel电子表格”与“常规电子表格,“因此,很可能其他应用程序可以处理如此大小的数据库。然而,我发现很难相信PowerPivot的作者没有包括将所需数据写入文本文件的选项。如果真的是这样,那就找一种不同的方法来解决您的原始问题——对于这样大小的数据库,我首先会推荐这种方法。MSoft Office在处理大文件方面真的很差(无论是excel还是word或其他)。感谢这个Riadh…它还可以将Alt-E-S特殊粘贴为“纯文本”,而不是尝试粘贴HTMLAs。通常,在R中有几种方法可以完成相同的任务(另存为*csv、*xlsx…或直接通过R IDE中的文本,并使用textConnection{}和read.table{}…)读取它。只需找到最适合您的任务和数据量的方法。对于大型数据集(10+mil行表),有什么提示吗?