Как конвертировать XML в Excel файл программно - PullRequest
3 голосов
/ 22 марта 2010

У меня есть XML-документ, содержащий небольшие данные для моего проекта, в который я хочу преобразовать свой XML-файл в файл Excel (Microsoft Office Excel 2003 и более поздние версии)

Как я могу сделать это программно?

Ответы [ 7 ]

8 голосов
/ 11 декабря 2012

Это может быть достигнуто с помощью Microsoft.Office.Interop.Excel, как показано ниже:

Прежде всего объявите эти необходимые ссылки.

using System;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using Microsoft.Office.Tools.Excel;
using Microsoft.VisualStudio.Tools.Applications.Runtime;
using Excel = Microsoft.Office.Interop.Excel;
using Office = Microsoft.Office.Core;
using System.Diagnostics;
using Microsoft.Win32;

Чем создать приложение Excel, как показано:

Excel.Application excel2; // Create Excel app
Excel.Workbook DataSource; // Create Workbook
Excel.Worksheet DataSheet; // Create Worksheet
excel2 = new Excel.Application(); // Start an Excel app
DataSource = (Excel.Workbook)excel2.Workbooks.Add(1); // Add a Workbook inside
string tempFolder = System.IO.Path.GetTempPath(); // Get folder 
string FileName = openFileDialog1.FileName.ToString(); // Get xml file name

После этого используйте приведенный ниже код в цикле, чтобы обеспечить копирование всех элементов в XML-файле

// Open that xml file with excel
DataSource = excel2.Workbooks.Open(FileName, 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);
// Get items from xml file
DataSheet = DataSource.Worksheets.get_Item(1);
// Create another Excel app as object
Object xl_app;
xl_app = GetObj(1, "Excel.Application");
Excel.Application xlApp = (Excel.Application)xl_app;
// Set previous Excel app (Xml) as ReportPage
Excel.Application ReportPage = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
// Copy items from ReportPage(Xml) to current Excel object
Excel.Workbook Copy_To_Excel = ReportPage.ActiveWorkbook;

Теперь у нас есть объект Excel с именем Copy_To_Excel, который содержит все элементы в XML. Мы можем сохранить и закрыть объект Excel с именем, которое мы хотим ..

Copy_To_Excel.Save("thePath\theFileName");
Copy_To_Excel.Close();
2 голосов
/ 12 декабря 2012

1. Заполните XML-файл в наборе данных,
2. конвертировать набор данных в Excel, используя метод asp.net

Это очень простые методы.

  public static void Convert(System.Data.DataSet ds, System.Web.HttpResponse response)
    {
        //first let's clean up the response.object
        response.Clear();
        response.Charset = "";
        //set the response mime type for excel
        response.ContentType = "application/vnd.ms-excel";
        //create a string writer
        System.IO.StringWriter stringWrite = new System.IO.StringWriter();


        //create an htmltextwriter which uses the stringwriter
        System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);
        //instantiate a datagrid
        System.Web.UI.WebControls.DataGrid dg = new System.Web.UI.WebControls.DataGrid();
        //set the datagrid datasource to the dataset passed in
        dg.DataSource = ds.Tables[0];
        //bind the datagrid
        dg.DataBind();


        //tell the datagrid to render itself to our htmltextwriter
        dg.RenderControl(htmlWrite);
        //all that's left is to output the html
        response.Write(stringWrite.ToString());
        response.End();
    }
2 голосов
/ 23 марта 2010

вы даже можете прочитать XML-файл как строку и использовать регулярные выражения для чтения содержимого между тегами и создания CSV-файла или использовать выражения xpath для чтения данных XML-файла и экспорта в CSV-файл.

2 голосов
/ 22 марта 2010

Если у вас есть контроль над сгенерированным XML, просто сгенерируйте файл электронной таблицы XML (стандарт XML-файла для Excel 2002 и 2003).

Они открываются в Excel без необходимости изменять расширение. (Чтобы открыть по умолчанию в Excel, расширение файла XML должно быть установлено так, чтобы оно открывалось с помощью «Редактора XML», который представляет собой приложение Office, которое при необходимости направляет файл XML в Excel, Word, PowerPoint, InfoPath или в ваш внешний редактор XML. Это сопоставление по умолчанию при установке Office, но для некоторых пользователей оно может оказаться неприемлемым, особенно для разработчиков, которые редактируют файлы XML в текстовом редакторе.)

Или используйте библиотеку NPOI для создания собственного файла Excel (97/2000 BIFF / XLS) вместо XML.

1 голос
/ 08 декабря 2012

Я не знаю простого способа преобразования кода из электронной таблицы в xls / xlsx на основе кода.Но вы можете взглянуть на Microsoft Open Xml SDK , который позволяет работать с xlsx.Вы можете создать электронную таблицу xlsx и просто добавить в нее свои данные.На уровне open-xml SDK это похоже на сборку XML-файла.

0 голосов
/ 22 марта 2010

Разве вы не можете просто открыть его в Excel? Я думал, что Excel распознал суффикс XML?

0 голосов
/ 22 марта 2010

Как открыть файл XML в Excel 2003 .

Вкратце, вы можете просто открыть его, используя Файл Открыть . Затем при выборе файла XML вам будет предложено выбрать один из следующих методов для импорта данных XML:

  • в виде списка XML
  • Как рабочая книга только для чтения.
  • Использование панели задач «Источник XML»
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...