我目前正在开展一个PHP
项目,并希望提供(非常基本的)Excel导出数据库表(只有单元格中的字符串和数字,没有格式化等)。我已经阅读了各种Excel文件格式。我想避免包含库来执行此操作。
我考虑过使用旧版Microsoft Office XML format,这似乎是最简单的解决方案。但是,当我为文件提供.xls
扩展名而不是.xml
时,Excel会发出警告。我不想生成.xml
文件,因为我不能保证我的项目用户不会简单地双击文件而感到困惑。我将此作为最终选择。
理想情况下,我想生成一个Office Open XML(。xlsx,又名.Excel Workbook)文件,当前版本的Excel无需抱怨即可打开。所以我查看了格式,发现它是zip
压缩的.xml
文件夹。
我想我只需将整个目录放在服务器上,写入/替换xl/worksheets/sheet1.xml
,再将其压缩并输出到浏览器。
遗憾的是,工作表不包含实际的字符串和数字,但引用了sharedStrings.xml
的所有值。
我找到了这个出色的答案https://stackoverflow.com/a/18820405/3625228但理想情况下,我想摆脱我可以简化.xlsx
的任何文件。
我查看了[Content_Types].xml
,其中存储了依赖项:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
<Default Extension="xml" ContentType="application/xml"/>
<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
<Override PartName="/xl/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>
<Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>
<Override PartName="/xl/sharedStrings.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"/>
<Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>
<Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>
</Types>
我的问题是:
.xlsx
存档中删除文件?sheet1.xml
并完全跳过sharedStrings.xml
?免责声明:不寻找使用Microsoft Office XML(Excel 2003)格式文件的库和/或帮助
答案 0 :(得分:2)
是的,您可以直接写入sheet1.xml ...我这样做:https://github.com/nimmneun/OneSheet 也许它给你一两个想法=) 我也不使用主题文件btw。
更新: 如果您还在搜索...我发现您实际上只需要5个文件,只需确保您的rels指向正确的文件/文件名:
workbook.xml
worksheet.xml
[Content_Types].xml
_rels/.rels
_rels/workbook.xml.rels
供参考:https://blogs.msdn.microsoft.com/brian_jones/2007/05/29/simple-spreadsheetml-file-part-3-formatting/
我将第3部分b / c链接到第1部分和第1部分。 2 =)