如何以编程方式将XML数据导入Excel文件?

以下代码应该可以帮助我从Excel导出XML数据:

Excel.Application application = new Excel.Application(); application.Workbooks.Open(excelFilepath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); string data = null; application.ActiveWorkbook.XmlMaps[1].XmlExport(out data); 

现在我正在寻找可以帮助我将XML数据导入Excel的代码,就像我通过单击“Developer”选项卡然后“Import XML”手动导入文件一样。

有人能告诉我怎么做吗?

使用相同的系统和MSDN网站。 我花了很短的时间才找到以下链接:

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xmlmap.import%28v=office.14%29

Excel Interop中与XmlMap相关的方法。 该特定链接是XmlMap.Import函数,它接受url(filePath)并导入xml数据。

在该页面上还有一个指向ImportXml()函数的链接,该函数可以接受xml字符串作为函数的直接输入,而不是使用URL。

对于这两者,代码假设已经定义了XmlMap。 我自己不知道如何通过接口以编程方式在Excel文档中定义XmlMap。

我也遇到了同样的问题:XmlMaps [1] .Import()不起作用,它只是崩溃了,我不知道如何定义所需的XmlMaps。 我找到了XmlMaps.Add(字符串模式)方法,但我没有传递给它的xml模式。 我手中的所有内容都是xml文件。

这是我的情况:我有一个xml,我可以通过将xml文件拖放到excel2007中手动将xml导入excel2007。 然后它会弹出一个对话框,问我如何打开xml。 有3个选项:作为xml,作为readonly excel工作表,作为xml源。 选择第一个选项,我的xml数据会自动导入到excel中。

然后我尝试通过c#做同样的事情,但我找到的每个方法都没用。

我坚持了3个小时。

非常幸运的是,我最终找到了解决方案:您不需要使用XmlMaps,只需使用OpenXml()。

以下是将合法xml导入excel的c#方法。

  1. 创建一个新的c#项目。 在项目上单击鼠标右键,单击“添加引用”,选择“.Net”选项卡,然后选择“Microsoft.Office.Interop.Excel”(如果找不到它,请检查您的visual studio是否安装了Office开发实用程序),单击“确定”。 这样,您就可以在c#中运行excel。

  2. 粘贴以下代码。 注意“xApp.Workbooks.OpenXML()”方法,我们将“xlXmlLoadImportToList”选项传递给它,它的function与我将xml拖入excel并选择第一个选项操作相同。 这是解释不同选项的链接http://msdn.microsoft.com/zh-cn/library/microsoft.office.interop.excel.workbooks.openxml(v=office.11​​).aspx

  3. 将“xml”和“xlsx”变量替换为您自己的文件路径,将其替换为“d:\ my.xml”“d:\ my.xlsx”

然后您的xml保存为xlsx。 祝好运!

  using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using Microsoft.Office.Interop.Excel; using Microsoft.Office.Interop; using System.IO; namespace SaveXmlAsExcel { class Program { static void Main(string[] args) { string xml = args[0]; string xlsx = args[1]; if (false == File.Exists(xml)) { Console.WriteLine("{0} file not exist", xlsx); return; } Microsoft.Office.Interop.Excel.Application xApp = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook excelWorkBook = xApp.Workbooks.OpenXML(xml, Type.Missing, Microsoft.Office.Interop.Excel.XlXmlLoadOption.xlXmlLoadImportToList); excelWorkBook.SaveAs(xlsx, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange); excelWorkBook.Close(); xApp.Workbooks.Close(); } } } 

这是我的xml:它必须具有excel可以成功解析它的合法格式。

     0 0 0 0   255 255 255 255