我有一个 MySQL 数据库,其中 .xlsx 文件存储为二进制文件。我可以下载这些二进制文件,并使用以下 .php 脚本将它们转换回 .xlsx 文件(一次全部放在一个文件夹中)。
<?php
$scan = glob(__DIR__ . '/*.bin');
foreach ($scan as $filePath) {
if (is_file($filePath)) {
$content = gzuncompress(base64_decode(file_get_contents($filePath)));
file_put_contents(__DIR__ . '/' . basename($filePath, '.bin') . '.xlsx', $content);
}
}
现在我想在 Power Query for Power BI 中进行相同的转换,以便我可以直接查看二进制文件,而无需事先下载和转换它们。
经过多次搜索,我认为这行代码应该可以工作。我获取二进制文件,通过 GZip 解压缩并将其转换为 Excel 文件。
= Table.AddColumn(billing_T_ARCHIVE_SUBSIDIARY, "ExcelFile", each Excel.Workbook(Binary.Decompress([FILE], Compression.GZip)))
在 Power Query 中,它看起来像这样:
错误信息是: “DataFormat.Error:GZip 标头中的幻数不正确。确保您传入的是 GZip 流。”
如果我在 Power Query 中将二进制文件更改为文本,它看起来是一样的
所以我将代码更改为这个,但同样的错误:
Table.AddColumn(#"Transformed Column", "ExcelFile", each Excel.Workbook(Binary.Decompress(Binary.FromText([FILE], BinaryEncoding.Base64), Compression.GZip)))
我不太确定问题出在哪里,我只能在 Power Query 中找到未压缩的 zip 文件的解决方案,但这并没有真正帮助,因为在我看来,压缩和编码一定是问题所在。
由于变体数量众多,PQ 中的 Zip 文件时好时坏。您尝试过这里的功能吗:
http://sql10.blogspot.com/2016/06/reading-zip-files-in-powerquery-m.html