Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以编程方式将XML数据导入Excel文件?_C#_.net_Xml_Excel - Fatal编程技术网

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

C# 如何以编程方式将XML数据导入Excel文件?,c#,.net,xml,excel,C#,.net,Xml,Excel,以下代码可以帮助我从Excel导出XML数据: Excel.Application application = new Excel.Application(); application.Workbooks.Open(excelFilepath, Missing.Value, Missing.Value,

以下代码可以帮助我从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的代码,就像我通过单击“开发者”选项卡然后单击“导入XML”手动导入文件一样


有人能告诉我怎么做吗?

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

Excel互操作中与XmlMap相关的方法。该特定链接指向XmlMap.Import函数,该函数接受url(文件路径)并导入xml数据

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


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

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

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

然后我尝试通过c#做同样的事情,但我发现的每一种方法都没有用

我坚持了三个小时

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

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

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

  • 粘贴下面的代码。注意“xApp.Workbooks.OpenXML()”方法,我们将“xlxmloadImportList”选项传递给它,它的功能与我将xml拖动到excel中的功能相同,并选择第一个选项operate。下面是解释不同选项的链接

  • 将“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才能成功解析它

    <AwardProps xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <AwardPropRecord>
        <g_AwardProps>
          <entry>
            <Id>0</Id>
            <IsElite>0</IsElite>
            <GoldCost>0</GoldCost>
            <Exp>0</Exp>
          </entry>
          <entry>
            <Id>255</Id>
            <IsElite>255</IsElite>
            <GoldCost>255</GoldCost>
            <Exp>255</Exp>
          </entry>
        </g_AwardProps>
      </AwardPropRecord>
    </AwardProps>
    
    
    0
    0
    0
    0
    255
    255
    255
    255