Dav*_*der 5 javascript oledb excel zip xlsx
使用以下自定义查询创建xlsx文件后(jsonplaceholder从typicode.com从服务加载数据)
let
Source = Json.Document(Web.Contents("https://jsonplaceholder.typicode.com/posts")),
#"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"userId", "id", "title", "body"}, {"userId", "id", "title", "body"})
in
#"Expanded Column1"
Run Code Online (Sandbox Code Playgroud)
并将其解压缩,我希望上面的字符串(查询定义)可以某种形式在结果文件夹结构中的某个位置找到。目标是以编程方式替换URL,但是我能找到的唯一查询定义是
<connection id="1" keepAlive="1" name="Query - posts" description="Connection to the 'posts' query in the workbook." type="5" refreshedVersion="6" background="1" saveData="1">
<dbPr connection="Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=posts;Extended Properties=""" command="SELECT * FROM [posts]"/>
</connection>
Run Code Online (Sandbox Code Playgroud)
尽管我不建议任何人从陌生人那里下载并运行Office文件,但我确实将xlsx上传到nofile.io。
我希望formula在上有一些属性queryTable,但是查询表定义看起来像
<queryTable xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" name="ExternalData_1" connectionId="1" autoFormatId="16" applyNumberFormats="0" applyBorderFormats="0" applyFontFormats="0" applyPatternFormats="0" applyAlignmentFormats="0" applyWidthHeightFormats="0">
<queryTableRefresh nextId="5">
<queryTableFields count="4">
<queryTableField id="1" name="userId" tableColumnId="5" />
<queryTableField id="2" name="id" tableColumnId="2" />
<queryTableField id="3" name="title" tableColumnId="3" />
<queryTableField id="4" name="body" tableColumnId="4" />
</queryTableFields>
</queryTableRefresh>
</queryTable>
Run Code Online (Sandbox Code Playgroud)
理想情况下,我只想要有关规范如何存储此信息的信息(因为我想在浏览器的前端中手动编辑此信息),尽管任何允许我生成此信息的解决方案都将是完美的。
小智 4
虽然这是一篇旧帖子,但我添加了对开放规范的引用,其中详细说明了如何在 Excel (.xlsx) Office Open XML 文件格式中找到查询信息。正如已经指出的,这些customXml\item[x].xml部分将包含 DataMashup 格式信息。这些包装和零件数据的规格可以在以下两个链接中找到:
需要注意的一件事是,顶级二进制流(在对 DataMashup 元素中的值进行 Base64 解码之后)在开头有一个 4 字节版本字段(为 0),在每个 Package、Permissions 和元数据片段。一旦每个部分被提取出来,它就可以用作独立的 PK Zip 包(实际上是 OPC - 开放打包约定)。