xml – 如何从其内部子组件正确组合一个有效的xlsx文件?

前端之家收集整理的这篇文章主要介绍了xml – 如何从其内部子组件正确组合一个有效的xlsx文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在iOS上以编程方式创建一个xlsx文件。由于xlsx文件的内部数据基本存储在单独的xml文件中,我尝试重新创建具有所有文件和子目录的xlsx结构,将其压缩成zip文件并将其扩展名设置为xlsx。我使用GdataxML解析器/ writer来创建所有必需的xml文件。但是,我收到的文件无法打开为xlsx文件。即使我从有效的xlsx文件中撕下所有数据,也可以通过从原始xml文件复制数据并手动压缩来手动创建所有xml文件,但是我无法重新创建一个有效的xlsx文件

问题是:

> xlsx真的只是一个包含xml文件的存档?
>如果我不能将xml文件压缩成zip文件并将其扩展名设置为xlsx,那么如何以编程方式创建有效的xlsx文件

回答你的问题:

> XLSX只是zip容器中的XML文件的集合。没有其他的魔法。
>如果您解压缩/解压缩有效的XLSX文件,然后重新压缩/压缩,并且您无法读取生成输出,那么使用压缩软件的问题。尝试一个不同的库/实用程序或检查它使用的默认压缩类型和级别,并尝试匹配到任何Excel使用。或者检查zip文件以确保目录结构得到维护。

xlsx文件内容示例:

unzip -l example.xlsx
Archive:  example.xlsx
  Length     Date   Time    Name
 --------    ----   ----    ----
      769  10-15-14 09:23   xl/worksheets/sheet1.xml
      550  10-15-14 09:22   xl/workbook.xml
      201  10-15-14 09:22   xl/sharedStrings.xml
      ...

我经常解压缩XLSX文件,进行微小的更改以进行测试,并重新压缩它们,而不会有任何问题。

更新:重要的是避免压缩父目录。以下是在Linux或OS X上使用zip系统实用程序的示例:

# Unzip an xlsx file into a directory.
unzip example.xlsx -d newdir

# Make some valid changes to the files.
cd newdir/
vi xl/worksheets/sheet1.xml

# Rezip the files *FROM* the unzipped directory.
# Note: you could also re-zip to the original file if required.
find . -type f | xargs zip ../newfile.xlsx

# Check the file looks okay.
cd ..
unzip -l newfile.xlsx
xdg-open newfile.xlsx

猜你在找的XML相关文章