在单个Excel文件中组合并打开多个xml文件

时间:2014-11-27 01:49:57

标签: c# xml excel

目前我已经在MS Office Excel中打开了一个xml文件。 但是现在我想在单个表中的单个MS Office Excel中打开几个xml文件。 (表示有几个xml文件的文件路径)

是否可以在不保存其他新文件的情况下这样做? (我只想打开并显示给用户)

我曾尝试使用不同的文件路径编写代码,但最终会同时打开2个excel文件。

我做了很多研究,但不幸的是我找不到符合我要求的文章。我真的需要帮助,所以只会在这里发帖。感谢。

我的代码背后:

var application = new Excel.Application();
object missing = System.Reflection.Missing.Value;
application.Workbooks.OpenText(
                    filePath,
                    missing,
                    1,
                    missing,
                    Excel.XlTextQualifier.xlTextQualifierNone,
                    missing,
                    missing,
                    missing,
                    true,
                    missing,
                    missing,
                    missing,
                    missing,
                    missing,
                    missing,
                    missing,
                    missing,
                    missing
                    ); 

1 个答案:

答案 0 :(得分:0)

我使用下面的代码解决了我的问题。 filePath是包含所选xml文件的所有文件路径的List。

string fileToOpen = filePath[0].ToString();
string tempFile = Path.GetTempFileName();
if (filePath.Count > 1)
{
     XDocument merged = new XDocument(new XElement("root"));
     for (int i = 0; i < filePath.Count; i ++)
     {
         XDocument doc = XDocument.Load(filePath[i]);
         merged.Root.Add(XDocument.Load(filePath[i]).Root);
     }
     merged.Save(tempFile);
     fileToOpen = tempFile;
}

var application = new Excel.Application();
object missing = System.Reflection.Missing.Value;
application.Workbooks.OpenText(
                    fileToOpen,
                    missing,
                    1,
                    missing,
                    Excel.XlTextQualifier.xlTextQualifierNone,
                    missing,
                    missing,
                    missing,
                    true,
                    missing,
                    missing,
                    missing,
                    missing,
                    missing,
                    missing,
                    missing,
                    missing,
                    missing
                    );