将Excel转换为XML
把工作表转成格式良好的XML,用于导入、订阅源和系统集成——元素名称取自您的列标题,值带有类型,根元素和行元素的名称由您决定。
- 绝不存储
- 无需排队,无需等待
- 无需注册,无水印
使用方法
添加工作簿
拖放.xlsx、.xls或.ods文件并选择工作表,XML会实时预览。
命名元素
设置根元素和行元素的名称,选择原始值还是显示值,以及空单元格的处理方式。
复制或下载
复制XML,或保存为.xml文件。
用树来描述表格
每个工作表中的每一行都会成为一个重复元素,每一列成为一个以标题行命名的子元素——正是这一点,让结果可以被任何期待数据XML而非电子表格的程序读取。转换过程中,列名必须变成合法的元素名称,而XML比电子表格的标题严格得多:名称不能以数字开头,不能包含空格和大多数标点,并且区分大小写。因此“Order Total (£)”会被改成更规整的形式,两个只在标点上不同的标题最后可能需要另行区分。
转过去的是值,而不是外观。一个显示为£1,234.50的单元格,在工作簿里存储的是数字1234.5加上一种格式,写入XML的就是这个数字——这几乎总是对的,因为接收数据的系统要的是值,而不是货币符号。公式同样不会保留:您得到的是公式计算出的结果,因为XML没有地方存放公式本身。颜色、字体、边框、条件格式、图表和图片在这里完全没有对应的表示。
需要检查的是日期。电子表格把日期存储为自某个起始日以来的天数,再通过格式显示出来,因此根据单元格的设置方式,日期可能会变成45356而不是一个日期。如果读取XML的程序在意日期,请在依赖这个文件之前先检查一下——也可以考虑先在工作簿里把日期设成文本格式,这样就彻底消除了歧义。
XML保留的五个字符——&符号、尖括号和引号——在值中会被转义,所以包含它们的文本能完整保留。空单元格会生成空元素而不是被省略,这让每条记录的结构保持一致,比缺失字段直接消失的输出好处理得多。受密码保护的工作簿需要先移除密码。
如果您需要的是别的
如果XML必须符合特定的Schema——某个行业格式、政府申报格式或某个系统的导入格式——通用转换无法生成它,在这里怎么配置也做不到。那是一项映射工作:用XSLT把这里的输出转换成所需的结构,提交前再用xmllint --schema校验结果。
凡是需要重复做的事,都写成脚本。Python的openpyxl和pandas可以读取工作簿并写出您指定的任何XML,还能控制日期和数字的呈现方式,而这恰恰是关键所在。另外也值得问一句:XML真的是目标格式吗?这十年里构建的大多数系统更愿意接收JSON或CSV,XML通常是从更老的系统继承下来的要求。
常见问题
生成的XML是什么样的?
每一行是一个元素,每一列是一个以其标题命名的子元素:<rows><row><Name>Ada</Name><Joined>2024-03-15</Joined></row>…</rows>。根元素和行元素的名称由您选择,也可以同时导出多个工作表,每个工作表包在各自的元素中。
我的标题里有空格和符号,会有问题吗?
不会。标题会被转成合法的XML名称:“First Name”变成First_Name,“2024 Sales”变成_2024_Sales,重复的标题会加上编号,因此输出始终是格式良好的XML。
日期和数字是怎么写入的?
选择原始值时,输出纯数字和ISO 8601日期(2024-03-15、14:30:00),任何系统都能解析。选择显示值时,会原样写入Excel中显示的文本,包括格式。
什么是XML Spreadsheet 2003?
一种Excel可以直接打开的XML格式,保留每个工作表及其中的数字、日期和文本。当某个系统要求的是“Excel XML”而不是您自己的数据XML时,请选择它。
我的电子表格会被存储吗?
不会。工作簿的读取和XML的生成都在本页完成;不会发送到任何地方,也不存储任何文件。
公式和格式会怎样?
公式会以计算结果写入。格式、图表和图片不属于数据XML的内容。
小贴士: 数据XML只包含值——没有格式、图表或图片。受密码保护的工作簿需要先移除密码。
把这个工具放到您的网站上
博客、课程页面或帮助文章均可免费使用。粘贴一段代码,访客就能直接在您的页面上使用。