许多用户在使用Power BI的过程中,都会有这么一个困扰:在Power BI 开发中,切片器一旦过多就会占用非常多的空间。发生这种情况时,您显示数据的页面也会更加小。但另一方面,如果您没有切片器,报告用户可能更难过滤他们想要查看的数据。许多用户不喜欢使用右侧的内置过滤器窗格。现在可以通过创建一个按需显示和隐藏的可折叠切片窗格来解决这个问题。
下面是一个简单的效果。用户可以使用箭头键(下面的#1和#2)隐藏和折叠切片器窗格。
继续阅读“创建切片器窗格节省PowerBI报告空间”许多用户在使用Power BI的过程中,都会有这么一个困扰:在Power BI 开发中,切片器一旦过多就会占用非常多的空间。发生这种情况时,您显示数据的页面也会更加小。但另一方面,如果您没有切片器,报告用户可能更难过滤他们想要查看的数据。许多用户不喜欢使用右侧的内置过滤器窗格。现在可以通过创建一个按需显示和隐藏的可折叠切片窗格来解决这个问题。
下面是一个简单的效果。用户可以使用箭头键(下面的#1和#2)隐藏和折叠切片器窗格。
继续阅读“创建切片器窗格节省PowerBI报告空间”更新一下之前写的Excel的数据库类,将其改成函数的形式,调用更简单(省却了生成类实例的步骤)。现在这个代码在工作中用了一年多,已经比较健壮。若有问题,请留言指出或与我联系。
这些代码有如下优势:
关于Excel操纵数据库可以参考前面文章:如何利用Excel的数据源功能实现多表合并和 SQL 查询以及如何动态修改Excel数据源的数据来源和数据源的查询语句。这里再放出一个我平常使用的封装ADODB数据库查询的Excel VBA类模块。
在使用之前,先需要声明一个类实例:
Dim db as New Database继续阅读“封装ADODB数据库查询的Excel VBA类模块”
Excel 有一个很有用的功能是直接导入外部数据库或者使用外部数据源建立数据透视表和数据透视图。但比较可惜的是,这个数据源的查询语句是静态的,它无法根据日期自动修改(比如在应用中,我们希望每天获取的外部数据都是当天最新的数据),下面两个函数是修改外部数据源的 VBA 代码,调用它们就可以建立动态的数据源。
' 更改数据表的来源 ' wb:工作表对象 ' connectionName:数据来源连接名称 ' strSQL:新查询语句(修改SQL的查询代码) ' strSQLConnection:新连接语句(修改来源数据库,在对DBF数据库操作时非常有用) ' author: zhang@zhiqiang.org, 2010 Public Sub ChangeODBCConnection(wb As Excel.Workbook, connectionName As String, _ Optional strSQL As String = "", Optional strSQLConnection As String = "") With wb.Connections(connectionName).ODBCConnection If Len(strSQLConnection) Then .CommandText = SplitString(strSQLConnection) If Len(strSQL) Then .Connection = SplitString(strSQL) End With wb.Connections(connectionName).Refresh End Sub ' 更改数据表的来源 ' pc:数据透视表的PivotCache对象 (例如:ActiveSheet.PivotTables(1).PivotCache) ' connectionName:数据来源连接名称 ' strSQL:新查询语句(修改SQL的查询代码) ' strSQLConnection:新连接语句(修改来源数据库,在对DBF数据库操作时非常有用) ' author: zhang@zhiqiang.org, 2010 Public Sub ChangePivotConnection(pc As Excel.PivotCache, Optional strSQLConnect, _ Optional strSQL As String = "") Dim blnODBCConnect As Boolean With pc If .QueryType = xlODBCQuery Then blnODBCConnect = True If Len(strSQLConnect) = 0 Then strSQLConnect = .Connection strSQLConnect = Replace(strSQLConnect, "ODBC;DSN", "OLEDB;DSN", 1, 1, vbTextCompare) End If If StrComp(.Connection, strSQLConnect, vbTextCompare) <> 0 And Len(strSQLConnect) Then .Connection = strSQLConnect End If If StrComp(.CommandText, strSQL, vbTextCompare) <> 0 And Len(strSQL) Then .CommandText = (strSQL) End If If blnODBCConnect = True Then .Connection = Replace(.Connection, "OLEDB;DSN", "ODBC;DSN", 1, 1, vbTextCompare) End If .Refresh End With End Sub ' 将字符串分割成短字符串的数组 Private Function SplitString(ByVal s As String) As Variant Dim ss() As Variant Dim i As Long ReDim ss(0 To Len(s) \ 200) ' note: it is not 256 For i = 0 To UBound(ss) ss(i) = Array(Mid(s, i * 200 + 1, 200)) Next i SplitString = ss End Function
原文:https://zhiqiang.org/coding/change-pivotcache-source.html
select * from industry
。这种方法最多支持 65535 行数据,当数据行数过多时, Excel 会提示找不到该数据表。同一张工作表里可以有多个数据表,通过定义不同的名称去引用。select * from `Sheet1$`
。这里工作表名后面的$
号表示这是一个工作表。工作表可以包含高达 100 万行数据,但同一个工作表内只能有一个数据表。select * from `Quotes$A1:F10000`
。select * from `D:\test.xlsx`.`Quotes$`
``
符号可以用半角中括号[]
代替。