是否有可用于处理(读取)Excel 2003 XML文档的库

|| 在某些情况下,Excel \的XML 2003格式被广泛用于文件上传到第三方系统。需要从这些文件中提取一些信息以进行其他处理。是否有任何可用于处理Excel 2003 2003 XML格式的库? 更详细的信息:这些XML文件的格式已由第三方定义,我们无法更改。此外,数据本身不是表格格式或任何一致的格式。 我以前曾使用used0来从这些XML电子表格的非常简单的版本中提取数据(基本上是行,列索引方法)。现在所需的数据来自更复杂的版本,其中包括合并的单元格,命名范围等。 此处理是在服务器上完成的,因此基于此关于服务器上Excel的臭名昭著的MS KB,Interop不是一个选项 有人还能建议一种处理这些文件的方法吗?     
已邀请:
最终的解决方案要求我创建一个XSLT,以从文件中提取所需的数据并转换为数据的非常简单的XML表示形式。我还创建了一些类,这些类表示使用ѭ1represented反序列化生成的XML的对象模型。 但是,为使此方法有效地工作,需要对源Excel XML文件进行更新,以包括需要提取的单元格的命名范围。名称范围允许使用更简单的XSLT,但是最大的代码气味是依赖于我无法控制的文件中命名范围的存在。 概述代码
   XPathDocument doc = new XPathDocument(\"path to Excel xml file\");
   XslCompiledTransform xslt = new XslCompiledTransform();

   StringReader sr = new StringReader(Resources.XSLT); // embedded resource, the xslt is read in as a string
   XmlTextReader xs = new XmlTextReader(sr);
   xslt.Load(xs);
   XmlWriterSettings settings = new XmlWriterSettings()
                                    {
                                        Indent = true,
                                        Encoding = Encoding.UTF8,
                                        OmitXmlDeclaration = false
                                    };

   MemoryStream memStream = new MemoryStream();
   using (XmlWriter writer = XmlWriter.Create(memStream, settings))
   {
       xslt.Transform(doc, writer); // the simple xml..almost there 
   }

   MyCustomClass curve;
   {
       XmlSerializer deSerializer = new XmlSerializer(typeof(MyCustomClass));
       // reset needed to beginning of mem stream since current position is the last write position
       memStream.Position = 0; 
       curve = (MyCustomClass)deSerializer.Deserialize(memStream);
    }
    
您是否考虑过在工作室中使用xsd.exe工具来生成易于阅读xml文件的类? 它当然不会包含用于组合字段的任何智能逻辑,但是好处是您不需要构建自己的读取逻辑或安装互操作库。     
检查CodePlex上的Excel Data Reader是否满足您的要求。我正在使用它将来自Excel的简单数据列表导入我们的应用程序之一。     

要回复问题请先登录注册