Перенос данных XML в Microsoft Excel 2002 или Microsoft Excel 2003 с помощью Visual C#

Переводы статьи Переводы статьи
Код статьи: 307029 - Vizualiza?i produsele pentru care se aplic? acest articol.
Для Microsoft Visual Basic.NET версии данной статьи, см. 307021.
Развернуть все | Свернуть все

В этой статье

Аннотация

Excel 2002 предоставляет функциональные возможности для открытия файлов в формате Extensible Markup Language (XML). XML-файл, который сформирован можно открыть непосредственно в программе Microsoft Excel 2002 или Microsoft Excel 2003 с помощью интерфейса пользователя или кода.

С помощью Microsoft Visual C# 2005 или Microsoft Visual C#.NET, можно воспользоваться преимуществами Excel XML беспрепятственно передача данных в книгу, чтобы представить данные с форматированием и упорядочение по вашему выбору. В данной статье показано, как выполнить эту задачу.

Сгенерировать XML из набора данных для использования В программе Microsoft Excel 2002 или Microsoft Excel 2003

В этом разделе описывается создание Набор данных объект и экспорт данных, содержащихся в XML-файл с помощью WriteXML метод. Созданный файл XML можно открыть непосредственно в Microsoft Excel. В целях иллюстрации Набор данных объект создается из учебной базы данных «Борей» Microsoft Access с помощью поставщика OLE DB для Jet. Тем не менее подобный код работает с любыми Набор данных Объект, созданный с помощью Visual C# 2005 или Visual C#.NET.
  1. Запустите Microsoft Visual Studio 2005 или Microsoft Visual Studio.NET. На Файл меню, нажмите кнопку Новый и выберите команду Проект. Выберите Приложение Windows из типов проектов Visual C#. По умолчанию создается форма Form1.
  2. На Представление Выберите пункт Панели инструментов Чтобы отобразить панель инструментов и добавить кнопку на форму Form1.
  3. Дважды щелкните значок Button1. Откроется окно кода для формы.
  4. Добавьте следующие строки с помощью директивы в верхнюю часть файла Form1.cs.
    using System.Data.OleDb;
    using System.Xml;
    					
  5. Добавьте следующие частная переменная-член класса Form1:
    private string strConn ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    	+ " C:\\Program Files\\Microsoft Office\\Office10\\Samples\\"
    	+ "Northwind.mdb;";
    					
    Примечание Необходимо изменить путь к Northwind.mdb в строку подключения в соответствии с вашей установки.
  6. Добавьте следующий код для Button1_Click обработчик:
    //Connect to the data source.
             OleDbConnection objConn = new OleDbConnection (strConn);
             try
             {
                objConn.Open();			
    
                //Fill a dataset with records from the Customers table.
                OleDbCommand objCmd = new OleDbCommand(
                   "Select CustomerID, CompanyName, ContactName, " 
                   + "Country, Phone from Customers", objConn);
                OleDbDataAdapter objAdapter = new OleDbDataAdapter();
                objAdapter.SelectCommand = objCmd;
                DataSet objDataset = new DataSet();
                objAdapter.Fill(objDataset);
    
    
                //Create the FileStream to write with.
                System.IO.FileStream fs = new System.IO.FileStream(
                   "C:\\Customers.xml", System.IO.FileMode.Create);
    
                //Create an XmlTextWriter for the FileStream.
                System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(
                   fs, System.Text.Encoding.Unicode);
    
                //Add processing instructions to the beginning of the XML file, one 
                //of which indicates a style sheet.
                xtw.WriteProcessingInstruction("xml", "version='1.0'");
                //xtw.WriteProcessingInstruction("xml-stylesheet", 
                  // "type='text/xsl' href='customers.xsl'");
    
                //Write the XML from the dataset to the file.
                objDataset.WriteXml(xtw);
                xtw.Close();
    
                //Close the database connection.
                objConn.Close();
             }
             catch (System.Exception ex)
             {
                MessageBox.Show(ex.Message);
             } 
    					
    ПримечаниеНеобходимо изменить код в Visual Studio 2005. По умолчанию Visual C# добавляет одну форму проекта при создании проекта Windows Forms. Форма называется Form1. Два файла, которые представляют собой формы с именем Form1.cs и именем Form1.designer.cs. Напишите код в файле Form1.cs. Файл именем Form1.designer.cs, где в конструкторе Windows Forms записывает код, реализующий все действия, выполненные путем перетаскивания элементов управления с панели элементов.

    Дополнительные сведения о конструкторе Windows Forms в Visual C# 2005, посетите следующие Microsoft Developer Network (MSDN) веб-узла:
    http://msdn2.Microsoft.com/en-us/library/ms173077.aspx
  7. Нажмите клавишу F5 для построения и запуска программы.
  8. Нажмите кнопку Button1 Чтобы создать XML-файл, а затем закройте форму Form1, чтобы завершить программу.
  9. Запустите Excel 2002 или Microsoft Excel 2003 и открыть выходной файл C:\Customers.xml.
  10. После вы столкнулись, как XML был разобран по строкам и столбцам в новой книге, закройте файл и выйти из Excel.

Формат XML с помощью таблицы стилей

На этом шаге показано преобразование способ форматирования и расположенных в книгу Excel данные XML с помощью таблицы стилей (XSL).
  1. С помощью любого редактора HTML или текстовом редакторе (например, Notepad.exe), сохраните следующий XSL как C:\Customers.xsl:
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:template match="/">
        <HTML>
          <HEAD>
            <STYLE>   
              .HDR { background-color:bisque;font-weight:bold }
            </STYLE>
          </HEAD>
          <BODY>
            <TABLE>
              <COLGROUP WIDTH="100" ALIGN="CENTER"></COLGROUP>
              <COLGROUP WIDTH="200" ALIGN="LEFT"></COLGROUP>
              <COLGROUP WIDTH="200" ALIGN="LEFT"></COLGROUP>
              <COLGROUP WIDTH="100" ALIGN="LEFT"></COLGROUP>
              <COLGROUP WIDTH="100" ALIGN="LEFT"></COLGROUP>
              <TD CLASS="HDR">Customer ID</TD>
              <TD CLASS="HDR">Company</TD>
              <TD CLASS="HDR">Contact</TD>
              <TD CLASS="HDR">Country</TD>
              <TD CLASS="HDR">Phone</TD>
              <xsl:for-each select="NewDataSet/Table">
                <TR>
                  <TD><xsl:value-of select="CustomerID"/></TD>
                  <TD><xsl:value-of select="CompanyName"/></TD>
                  <TD><xsl:value-of select="ContactName"/></TD>
                  <TD><xsl:value-of select="Country"/></TD>
                  <TD><xsl:value-of select="Phone"/></TD>
                </TR>
              </xsl:for-each>
            </TABLE>
          </BODY>
        </HTML>
      </xsl:template>
    </xsl:stylesheet> 
    					
  2. Раскомментируйте следующую строку кода в Button1_Click обработчик:
    xtw.WriteProcessingInstruction("xml-stylesheet", 
    	"type='text/xsl' href='customers.xsl'");
    					
    Эта строка кода записывает инструкцию обработки XML-файл, который используется Excel для поиска таблицы стилей (Customers.xsl).

  3. Нажмите клавишу F5 для построения и запуска программы.
  4. Нажмите кнопку Button1 Чтобы создать XML-файл, а затем закройте форму Form1, чтобы завершить программу.
  5. Запустите Excel 2002 или Microsoft Excel 2003 и открыть выходной файл C:\Customers.xml.
  6. Поскольку Excel видит инструкции обработки для таблицы стилей в XML, появится диалоговое окно поле при открытии файла. В Импорт XML-файла диалоговое окно, выберите Откройте файл в следующую таблицу стилей. В списке select Customers.XSL и нажмите ОК. Обратите внимание на то, что имеет формат XML-данные и что столбцы были упорядочены согласно таблице стилей.
  7. Закройте файл и выйти из Excel.

Откройте преобразованные данные XML с помощью кода

На данном этапе вы открыли XML-файл с помощью пользовательского интерфейса в Microsoft Excel. В этом разделе описывается способ автоматизации Microsoft Excel для открытия книги программными средствами. В следующем образце показано, как открыть при первом преобразовании XML в преобразованном XML без вмешательства пользователя Набор данных объект в формат HTML.
  1. Добавить ссылку Библиотека объектов Microsoft Excel 10.0 или объект Microsoft Excel 11.0. Чтобы сделать это, выполните следующие действия.
    1. На Проект меню, нажмите кнопку Добавить ссылку.
    2. На COM Вкладка, найдите Библиотека объектов Microsoft Excel 10.0 или объект Microsoft Excel 11.0 и нажмите Выберите.
    3. Нажмите кнопку ОК В диалоговом окне Добавление ссылок диалоговое окно для подтверждения выбора. Если появится запрос на создание оберток для библиотеки, который был выбран, нажмите кнопку Да.
  2. Добавьте следующие строки с помощью директивы в верхнюю часть файла Form1.cs.
    using Excel = Microsoft.Office.Interop.Excel;
    					
  3. В Visual C# 2005 или Visual C#.NET проект, добавить другой кнопки на форму Form1.
  4. Дважды щелкните значок Button2. Когда окно кода для формы отображается, добавьте следующий код для Button2_Click обработчик:
    //Connect to the data source.
    OleDbConnection objConn = new OleDbConnection (strConn);
    objConn.Open();			
    
    //Fill a dataset with records from the Customers table.
    OleDbCommand objCmd = new OleDbCommand(
    	"Select CustomerID, CompanyName, ContactName, " 
    	+ "Country, Phone from Customers", objConn);
    OleDbDataAdapter objAdapter = new OleDbDataAdapter();
    objAdapter.SelectCommand = objCmd;
    DataSet objDataset = new DataSet();
    objAdapter.Fill(objDataset);
    
    //Create the FileStream to write with.
    System.IO.FileStream fs = new System.IO.FileStream(
    	"C:\\Customers.htm", System.IO.FileMode.Create);
    
    //Create an XmlTextWriter for the FileStream.
    System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(
    	fs, System.Text.Encoding.Unicode);
    
    //Transform the XML using the stylesheet.
    XmlDataDocument xmlDoc = new XmlDataDocument(objDataset);
    System.Xml.Xsl.XslTransform xslTran = new System.Xml.Xsl.XslTransform();
    xslTran.Load("C:\\Customers.xsl");
    xslTran.Transform(xmlDoc, null, xtw);
    
    //Open the HTML file in Excel.
    Excel.Application oExcel = new Excel.Application();
    oExcel.Visible=true;
    oExcel.UserControl=true;
    Excel.Workbooks oBooks = oExcel.Workbooks;
    object oOpt = System.Reflection.Missing.Value; //for optional arguments
    oBooks.Open("c:\\customers.htm", oOpt, oOpt, oOpt, 
    	oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, oOpt, 
    	oOpt, oOpt, oOpt);
    
    					
  5. Нажмите клавишу F5 для построения и запуска программы.
  6. Нажмите кнопку Button2 Чтобы открыть преобразованные данные XML в Excel.
Примечание Excel 2002 и объектной модели Excel 2003 предоставляют OpenXML метод, позволяющий программно файл XML с помощью применения таблиц стилей, предыдущий пример не вызывает этот метод из-за проблемы с использованием этого метода, с помощью клиента автоматизации. В OpenXML метод работает должным образом при вызове макроса Microsoft Excel; Тем не менее, при вызове этого метода с помощью клиента автоматизации Таблицы стилей параметр игнорируется.Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
307230 Ошибка: Параметр таблицы стилей метода OpenXML игнорируются при автоматизации Excel 2002

Ссылки

Дополнительные сведения содержатся в следующих статьях Microsoft Knowledge Base:
288215 ИНФОРМАЦИЯ: Microsoft Excel 2002 и XML
302084 Как для автоматизации приложения Microsoft Excel из Visual C#.NET
301216 Как заполнить объект DataSet из базы данных с помощью Visual Basic.NET
306023 Способы передачи данных в книгу Excel с помощью Visual C#.NET

Свойства

Код статьи: 307029 - Последний отзыв: 6 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Excel 2002 Standard Edition
Ключевые слова: 
kbhowtomaster kbmt KB307029 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:307029

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com