一个.xlsx文件能够简化多远?

我目前正在一个PHP项目,并希望提供(非常基本)数据库表的Excel导出(只在单元格中的string和数字,没有格式等)。 我已经阅读了各种Excel文件格式。 我想避免包括一个图书馆来做到这一点。

我已经考虑使用传统的Microsoft Office XML格式 ,它似乎是最简单的解决scheme。 但是,当我给文件一个.xls扩展名而不是.xml时,Excel会发出警告。 我不想要生成.xml文件,因为我不能保证我的项目的用户不知道只是双击文件,而感到困惑。 我会留下这个最后的select。

理想情况下,我想生成一个Office Open XML (.xlsx,也就是Excel工作簿)文件,当前版本的Excel打开时不会抱怨。 所以我看了一下这个格式,发现它是一个zip.xml文件的文件夹。

一个xlsx文件的结构

我想我只是把整个目录放在服务器上,写/replacexl/worksheets/sheet1.xml ,再次压缩并输出到浏览器。 可悲的是,工作表不包含实际的string和数字,而是引用来自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档案中移除文件?
  • 什么是绝对需要Excel打开而不抱怨的文件?
  • 有没有一种方法或窍门把实际的string/值放入sheet1.xml并跳过sharedStrings.xml

免责声明:不寻找图书馆和/或帮助使用Microsoft Office XML(Excel 2003)格式的文件

是的,你可以直接写入sheet1.xml …我这样做: https : //github.com/nimmneun/OneSheet也许它给你一个或两个想法=)我也不使用主题文件btw。

更新:如果你仍然在search…我发现你实际上只需要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和2 =)