【问题标题】:Converting unformatted Excel to XML将未格式化的 Excel 转换为 XML
【发布时间】:2012-04-26 09:04:51
【问题描述】:

我熟悉将普通的 excel 表转换为 xml,这几乎是一个平面结构。我的问题是我的表格有跨越所有表格列的标题。我无法将我的架构映射到单元格。月份将作为新行自动添加到成本节点。见例子。

成本销售利润
一月
100 150 50
20 40 20
二月
100 150 50
20 40 20
三月
100 150 50
20 40 20

这是我正在寻找的 XML 结果

<Sales>  
 <Period>  
   <Month>January</Month>  
   <Cost>100</Cost>  
   <Sell>150</Sell>  
   <Profit>50</Profit>  
  </Period>  
  <Period>  
   <Month>February</Month>  
   <Cost>100</Cost>  
   <Sell>150</Sell>  
   <Profit>50</Profit>  
  </Period>  
  <Period>  
   <Month>March</Month>  
   <Cost>100</Cost>  
   <Sell>150</Sell>  
   <Profit>50</Profit>  
 </Period>  
</Sales>

提前感谢您的帮助

【问题讨论】:

  • 获取Tag“Period”的转换器在哪里?转换器如何知道20-40-20行不输出?创建一些定制代码来创建您寻求的 XML 很容易,但我看不出任何通用例程如何从该输入生成此 XML。

标签: xml excel


【解决方案1】:

我不知道您可以调整多少源 Excel 工作表以及是否可以对 XML 文件进行后处理。

您可以插入一个“结转”月份的辅助列,尽管这不会帮助您完全摆脱整个月份。

有了这个,我得到了以下 XML 导出。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Sales xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<Period>
    <Month>January</Month>
    <Cost>January</Cost>
</Period>
<Period>
    <Month>January</Month>
    <Cost>100</Cost>
    <Sell>150</Sell>
    <Profit>50</Profit>
</Period>
<Period>
    <Month>January</Month>
    <Cost>20</Cost>
    <Sell>40</Sell>
    <Profit>20</Profit>
</Period>
[...]
</Sales>

然后,您可以使用适当的 XSLT 对该导出进行后处理,以消除仅包含月份的行。或者更进一步地使用辅助列,以便仅包含月份的行全部为空(即计算 2 个月的列和仅包含数值的成本列)。但我看不到完全消除这些线条的方法。

安德烈亚斯

【讨论】:

    猜你喜欢
    • 2011-06-14
    • 1970-01-01
    • 2022-01-19
    • 2019-12-30
    • 2014-09-03
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    相关资源
    最近更新 更多