Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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
将excel单元格颜色读入Power BI_Excel_Powerbi - Fatal编程技术网

将excel单元格颜色读入Power BI

将excel单元格颜色读入Power BI,excel,powerbi,Excel,Powerbi,我有一个excel文件,需要读入Power BI。不幸的是,我无法控制这个文件,因为它是由另一个人自动生成的 这个文件中的一些单元格只填充了颜色,我希望在将数据导入Power BI时能够转换这些颜色 例如,如果excel中的颜色为绿色,则在相应的power BI单元中显示true。目前它只是一片空白 有人知道从Power BI的excel中获取单元格“元数据”如颜色的方法吗?叹气 颜色不是数据。不幸的是,许多人对单元格进行颜色编码,然后期望能够根据单元格的颜色进行操作。但并不是那么简单 尽管Ex

我有一个excel文件,需要读入Power BI。不幸的是,我无法控制这个文件,因为它是由另一个人自动生成的

这个文件中的一些单元格只填充了颜色,我希望在将数据导入Power BI时能够转换这些颜色

例如,如果excel中的颜色为绿色,则在相应的power BI单元中显示true。目前它只是一片空白

有人知道从Power BI的excel中获取单元格“元数据”如颜色的方法吗?

叹气

颜色不是数据。不幸的是,许多人对单元格进行颜色编码,然后期望能够根据单元格的颜色进行操作。但并不是那么简单

尽管Excel现在提供了一些按单元格颜色过滤的方法,但它仍然无法使用工作表公式识别单元格颜色

因此,您需要一个VBA例程来计算所有单元格并将其颜色记录在另一个表中,然后需要将该表推送到Power BI数据模型中

从长远来看,与生产彩色编码细胞的其他人交谈,并教他们更好的做事方式可能会更容易。向他们演示如何使用基于单元格值的条件格式进行颜色编码。用于条件格式的逻辑也可用于对Power BI中的数据进行分类

从数据体系结构的角度来看,最好的解决方案是在源代码处解决问题,而不是创建工具来处理错误的数据输入

只是说,“

现在还不要放弃。。。 我在Excel中找到了一个使用Power Query的迂回方式工作的示例。它将根据每个单元格的地址为您提供与每个单元格关联的元数据(例如,A1用颜色FF00突出显示)。我依靠一些Excel函数将突出显示的单元格地址与单元格值关联起来。使用Power BI提取单元数据可能需要一些额外的工作

该技术是使用powerquery打开Excel.xlsx文件,该文件基本上是一个包含.xml文档的.zip文件。可以将每个单元格的颜色信息提取到表格中。从那里,我可以使用
INDIRECT()
语句从.xlsx工作簿中读取并从彩色单元格中提取值。这对我很有效

你可以在论坛下面的链接中找到一个工作示例。示例中用户定义的DecompressFiles函数使用
Binary.Decompress
命令访问.xlsx文件中的XML文件


在我的情况下,我将大约7000行50列的数据库导出到Excel中。脱机工作后,用户通过Excel进行更改,突出显示他们更改的每个单元格。然后他们想让我只用高亮显示的单元格更新数据库。每个人使用的背景颜色都不一样,但我不在乎是什么颜色,只是它是彩色的

对于每个更改的单元格,我都能够生成SQL语句来更新数据库,并将其插入到事务日志表中。主数据库表基本上是平面的,但修改的少数外键查找值必须手动更新

F列使用间接公式从源工作簿中提取数据。请注意,必须打开源工作簿才能从中读取间接公式。
=间接(“[”&Import\u Filename&“]”&Sheet\u Name&“!”&[@[SheetCellRef.2]])

列G通过在字符串周围加引号来细化列F中的数据,如果单元格为空,则为NULL

列H获取列标题以了解要更新的字段

列K从列E中指定的行中获取记录ID值

我已经为用户运行了三次不同的过程,所以我投入的时间很快就得到了回报。我所要做的就是将他们最新突出显示的Excel文件放在本地文件夹中,并刷新Power查询以生成新的SQL语句



抱歉,我没有在这里发布“解决方案”。这个过程仍然有点脆弱,我正在尝试制作一个更强大的例子,我可以与大家分享。堆栈溢出似乎不是为解决方案的持续开发而设置的。这个答案的目的是给你们中的一些人带来希望,他们迫切需要一个解决方案,不会接受“不”作为答案。

非常同意。我只是想用“快速肮脏的方式”解决一个小问题,但现在看来我必须用正确的方式来解决,这意味着说服其他人改变他们的方式:)谢谢你的帮助