Использование форматов файлов Office XML и упаковка компонентов из.NET Framework 3.0 для создания простого книги Excel 2007 или простого документа Word 2007

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:931866
ВВЕДЕНИЕ
В данной статье описывается, как использовать Microsoft Office XML формат файла и упаковка компонентов корпорации Майкрософт.NET Framework 3.0 Чтобы создать простой книги Microsoft Office Excel 2007 или простой Microsoft Office Документ Word 2007.
Дополнительная информация
Примеры кода в этой статье Создание нового Excel рабочая книга или документ Word, содержащий текст «Hello World» без автоматизации Excel 2007 или Word 2007.

Требования к клиенту

  • Microsoft Visual Studio 2005 или Microsoft Visual C# 2005 г.
  • .NET Framework 3.0
  • Visual Studio 2005 расширений.NET Framework 3.0
  • Microsoft Word или Excel 2007 2007 г.

Пошаговый пример

Создание приложения Windows

  1. Запустите Visual Studio 2005 или Visual C# 2005.
  2. Создание нового приложения Windows Visual C#.
  3. Добавьте ссылку на сборку Windowsbase.dll.

    Примечание Если Windowsbase.dll ссылка отсутствует .NET на вкладке очередь Добавить ссылку диалоговое окно, нажмите кнопку Обзор Вкладка, найдите Папка assemblies\Microsoft\Framework\v3.0 C:\Program Files\Reference, и Нажмите кнопку WindowsBase.dll.
  4. В Visual Studio нажмите кнопкуКод В меню Представление меню для переключения в представление «код».
  5. Добавьте следующие директивы в Форма Form1 класс.
    		using System.Xml;	using System.IO;	using System.IO.Packaging;

Добавьте код для создания книги Excel

  1. В Visual Studio нажмите кнопкуКонструктор В меню Представление меню для переключения в режим конструктора для формы.
  2. Добавить Кнопка элемента управления формы Windows Forms. Установка Текстсвойство кнопки Создайте книгу Excel.
  3. Дважды щелкните значок Кнопка элемент управления для созданияButton1_Click обработчик событий.
  4. Добавьте следующий код дляButton1_Click обработчик событий. Новый код обработчика событий должно напоминать следующий код.
    	private void button1_Click(object sender, EventArgs e)        {            //Create the XML documents.            XmlDocument workbookDoc = null;            workbookDoc = CreateExcelXML("workbook");            XmlDocument worksheetDoc = null;            worksheetDoc = CreateExcelXML("worksheet");            XmlDocument sharedstringsDoc = null;            sharedstringsDoc = CreateExcelXML("sharedstrings");            //Create the Excel package.            Package xlPackage = null;            xlPackage = CreateExcelWorkbookPackage("HelloWorld.xlsx");            //Add the parts to the Excel package.            if (xlPackage != null)            {                //Add the workbook part.                AddExcelPart(xlPackage, "workbook", workbookDoc);                //Add the worksheet part.                AddExcelPart(xlPackage, "worksheet", worksheetDoc);                //Add the sharedstrings part.                AddExcelPart(xlPackage, "sharedstrings", sharedstringsDoc);            }            //Save the changes, and then close the package.            if (xlPackage != null)            {                xlPackage.Flush();                xlPackage.Close();            }            MessageBox.Show("Successfully created Excel workbook");        }
  5. Добавьте следующий код для Форма Form1 класс. Данный пример кода создает и вставляет компоненты XML, содержать листы Excel.
    	  private XmlDocument CreateExcelXML(string partType)        {            switch (partType)            {                case "workbook":                    //Create a new XML document for the workbook.                    XmlDocument workbookDoc = new XmlDocument();                    //Obtain a reference to the root node, and then add                    //the XML declaration.                    XmlElement wbRoot = workbookDoc.DocumentElement;                    XmlDeclaration wbxmldecl = 					workbookDoc.CreateXmlDeclaration					("1.0", "UTF-8", "yes");                    workbookDoc.InsertBefore(wbxmldecl, wbRoot);                    //Create and append the workbook node                    //to the document.                    XmlElement workBook = 					workbookDoc.CreateElement("workbook");                    workBook.SetAttribute("xmlns",                        "http://schemas.openxmlformats.org/" +                        "spreadsheetml/2006/main");                    workBook.SetAttribute("xmlns:r",                        "http://schemas.openxmlformats.org/officeDocument/" +                        "2006/relationships");                    workbookDoc.AppendChild(workBook);                    //Create and append the sheets node to the                     //workBook node.                    XmlElement sheets = workbookDoc.CreateElement("sheets");                    workBook.AppendChild(sheets);                    //Create and append the sheet node to the                     //sheets node.                    XmlElement sheet = workbookDoc.CreateElement("sheet");                    sheet.SetAttribute("name", "Sheet1");                    sheet.SetAttribute("sheetId", "1");  sheet.SetAttribute("id",				"http://schemas.openxmlformats.org/" +				"officeDocument/2006/relationships","rId1");                    sheets.AppendChild(sheet);                    return workbookDoc;                case "worksheet":                    //Create a new XML document for the worksheet.                    XmlDocument worksheetDoc = new XmlDocument();                    //Get a reference to the root node, and then add                    //the XML declaration.                    XmlElement wsRoot = worksheetDoc.DocumentElement;                    XmlDeclaration wsxmldecl =                         worksheetDoc.CreateXmlDeclaration("1.0", "UTF-8", "yes");                    worksheetDoc.InsertBefore(wsxmldecl, wsRoot);                    //Create and append the worksheet node                    //to the document.                    XmlElement workSheet = 					worksheetDoc.CreateElement("worksheet");                    workSheet.SetAttribute("xmlns",                        "http://schemas.openxmlformats.org/" +                        "spreadsheetml/2006/main");                    workSheet.SetAttribute("xmlns:r",                        "http://schemas.openxmlformats.org/" +                        "officeDocument/2006/relationships");                    worksheetDoc.AppendChild(workSheet);                                                           //Create and add the sheetData node.                    XmlElement sheetData = 					worksheetDoc.CreateElement("sheetData");                    workSheet.AppendChild(sheetData);                    //Create and add the row node.                     XmlElement rNode = worksheetDoc.CreateElement("row");                    rNode.SetAttribute("r", (1).ToString());                    rNode.SetAttribute("spans", "1:1");                    sheetData.AppendChild(rNode);                    //Create and add the column node.                    XmlElement cNode = worksheetDoc.CreateElement("c");                    cNode.SetAttribute("r", "A1");                    cNode.SetAttribute("t", "s");                    rNode.AppendChild(cNode);                    //Add the "Hello World" text to the worksheet.                    XmlElement vNode = worksheetDoc.CreateElement("v");                    vNode.InnerText = "0";                    cNode.AppendChild(vNode);                    return worksheetDoc;                                    case "sharedstrings":                    //Create a new XML document for the sharedStrings.                    XmlDocument sharedStringsDoc = new XmlDocument();                    //Get a reference to the root node, and then add                    //the XML declaration.                    XmlElement ssRoot = sharedStringsDoc.DocumentElement;                    XmlDeclaration ssxmldecl =                        sharedStringsDoc.CreateXmlDeclaration("1.0", "UTF-8", "yes");                    sharedStringsDoc.InsertBefore(ssxmldecl, ssRoot);                    //Create and append the sst node.                    XmlElement sstNode = 					sharedStringsDoc.CreateElement("sst");                    sstNode.SetAttribute("xmlns", 					"http://schemas.openxmlformats.org/" +                        "spreadsheetml/2006/main");                    sstNode.SetAttribute("count", "1");                    sstNode.SetAttribute("uniqueCount", "1");                    sharedStringsDoc.AppendChild(sstNode);                    //Create and append the si node.                    XmlElement siNode = sharedStringsDoc.CreateElement("si");                    sstNode.AppendChild(siNode);                    //Create and append the t node.                    XmlElement tNode = sharedStringsDoc.CreateElement("t");                    tNode.InnerText = "Hello World";                    siNode.AppendChild(tNode);                    return sharedStringsDoc;                            default:                    return null;            }        }        private Package CreateExcelWorkbookPackage(string fileName)        {            //Create a new Excel workbook package on the            //desktop of the user by using the specified name.            string desktopDir = System.Environment.GetFolderPath(                        Environment.SpecialFolder.DesktopDirectory);            Package xlPackage = Package.Open(desktopDir + "\\" + fileName,                    FileMode.Create, FileAccess.ReadWrite);            return xlPackage;        }        private void AddExcelPart(Package fPackage, string part, XmlDocument xDoc)        {            switch (part)            {                 case "workbook":                    string nsWorkbook = "application/vnd.openxmlformats-" +                            "officedocument.spreadsheetml.sheet.main+xml";                    string workbookRelationshipType = "http://schemas.openxmlformats.org/" +                            "officeDocument/2006/relationships/" +"officeDocument";                    Uri workBookUri = PackUriHelper.CreatePartUri(new                             Uri("xl/workbook.xml",UriKind.Relative));                    //Create the workbook part.                    PackagePart wbPart =                            fPackage.CreatePart(workBookUri, nsWorkbook);                    //Write the workbook XML to the workbook part.                    Stream workbookStream =                             wbPart.GetStream(FileMode.Create, 					FileAccess.Write);                    xDoc.Save(workbookStream);                    //Create the relationship for the workbook part.                    fPackage.CreateRelationship(workBookUri,                        TargetMode.Internal,workbookRelationshipType,"rId1");                    break;                case "worksheet":                    string nsWorksheet = "application/vnd.openxmlformats-" +                            "officedocument.spreadsheetml.worksheet+xml";                    string worksheetRelationshipType = 				"http://schemas.openxmlformats.org/" +                        "officeDocument/2006/relationships/worksheet";                    Uri workSheetUri = PackUriHelper.CreatePartUri(new                          Uri("xl/worksheets/sheet1.xml",UriKind.Relative));                    //Create the workbook part.                    PackagePart wsPart =                            fPackage.CreatePart(workSheetUri, nsWorksheet);                    //Write the workbook XML to the workbook part.                    Stream worksheetStream =                              wsPart.GetStream(FileMode.Create, 					FileAccess.Write);                    xDoc.Save(worksheetStream);                    //Create the relationship for the workbook part.                    Uri wsworkbookPartUri = PackUriHelper.CreatePartUri(new                             Uri("xl/workbook.xml",UriKind.Relative));                    PackagePart wsworkbookPart = 					fPackage.GetPart(wsworkbookPartUri);                    wsworkbookPart.CreateRelationship(workSheetUri,                              TargetMode.Internal, worksheetRelationshipType,"rId1");                                        break;                case "sharedstrings":                    string nsSharedStrings = 				"application/vnd.openxmlformats-officedocument" +                        ".spreadsheetml.sharedStrings+xml";                    string sharedStringsRelationshipType = "http://schemas.openxmlformats.org" +                            "/officeDocument/2006/relationships/sharedStrings";                    Uri sharedStringsUri = PackUriHelper.CreatePartUri(new                          Uri("xl/sharedStrings.xml", UriKind.Relative));                    //Create the workbook part.                    PackagePart sharedStringsPart =                          						fPackage.CreatePart(sharedStringsUri,nsSharedStrings);                    //Write the workbook XML to the workbook part.                    Stream sharedStringsStream =                            sharedStringsPart.GetStream(FileMode.Create,FileAccess.Write);                    xDoc.Save(sharedStringsStream);                    //Create the relationship for the workbook part.                    Uri ssworkbookPartUri = PackUriHelper.CreatePartUri(new                            Uri("xl/workbook.xml", UriKind.Relative));                    PackagePart ssworkbookPart = 					fPackage.GetPart(ssworkbookPartUri);                    ssworkbookPart.CreateRelationship(sharedStringsUri,                            TargetMode.Internal, 					sharedStringsRelationshipType,"rId2");                    break;            }        }
  6. Сохраните проект.

Добавьте код для создания документа Word

  1. В Visual Studio нажмите кнопкуКонструктор В меню Представление меню для переключения в режим конструктора для формы.
  2. Добавить другой Кнопка элемента управления формы Windows Forms. УстановкаТекст свойство кнопки Создать документ Word.
  3. Дважды щелкните значок Кнопка элемент управления для созданияButton2_Click обработчик событий.
  4. Добавьте код дляButton2_Click обработчик событий, так что он похож на приведенный ниже код.
    	private void button2_Click(object sender, EventArgs e)        {            //Create the XML for the Word document.            XmlDocument xDoc = null;            xDoc = CreateDocumentXML("Hello World");            //Create the Word document package.            if (xDoc != null)            {                bool hResult = CreateWordDocumentPackage("HelloWorld.docx",			 xDoc);                if (hResult == true)                {                    MessageBox.Show("Successfully created Word document");                }            }        }        
  5. Добавьте следующий код для Форма Form1 класс. Данный пример кода создает и вставляет компоненты XML, содержащих слово документ.
    	private XmlDocument CreateDocumentXML(string docText)        {            string nsWordML =                  "http://schemas.openxmlformats.org/wordprocessingml" +                  "/2006/main";                        //Create a new XML document.            XmlDocument xDoc = new XmlDocument();            //Create and add the document node.            XmlElement docNode =               xDoc.CreateElement("w:document", nsWordML);            xDoc.AppendChild(docNode);            //Create and add the body node to the             //document node.            XmlElement bodyNode =                 xDoc.CreateElement("w:body", nsWordML);            docNode.AppendChild(bodyNode);            //Create and add the wp node to the docNode.            XmlElement wpNode =               xDoc.CreateElement("w:p", nsWordML);            bodyNode.AppendChild(wpNode);            //Create and add the wr node to the wpNode.            XmlElement wrNode =               xDoc.CreateElement("w:r", nsWordML);            wpNode.AppendChild(wrNode);            //Create and add the wt node to the wrNode.            XmlElement wtNode =               (XmlElement)xDoc.CreateNode(XmlNodeType.Element,               "w", "t", nsWordML);            wrNode.AppendChild(wtNode);            //Add the supplied text to the wtNode.            wtNode.InnerText = docText;            return xDoc;        }       private bool CreateWordDocumentPackage(string fileName, XmlDocument xDoc)        {            try            {                string docContentType = "application/vnd.openxmlformats-" +                        "officedocument.wordprocessingml." +                        "document.main+xml";                                string docRelationshipType = 				"http://schemas.openxmlformats.org" +                        "/officeDocument/2006/relationships/" +                        "officeDocument";                //Create a new package file on the desktop of the user by using                //the supplied file name.                string desktopDir = System.Environment.GetFolderPath(                        Environment.SpecialFolder.DesktopDirectory);                Package pkg = Package.Open(desktopDir + "\\" + fileName,                       FileMode.Create, FileAccess.ReadWrite);                                                            //Create a Uri for the document part.                Uri docPartURI = PackUriHelper.CreatePartUri(                       new Uri("/word/document.xml",                        UriKind.Relative));                //Create the document part.                PackagePart pkgPart = 				pkg.CreatePart(docPartURI,docContentType);                //Add the data from XMLDocument to the document part.                Stream partStream = pkgPart.GetStream(                    FileMode.Create, FileAccess.Write);                                   xDoc.Save(partStream);                //Create a relationship between the document part                //and the package.                PackageRelationship pkgRelationship =                         pkg.CreateRelationship(docPartURI,                        TargetMode.Internal,docRelationshipType, "rId1");                                                //Flush the changes, and then close the package.                pkg.Flush();                pkg.Close();                                return true;            }            catch (Exception ex)            {                //Display a message to the user the indicates that an error                //occurred, and then return a result of false.                MessageBox.Show("An error occurred creating the document." +                    " " + ex.Message,"Error Creating Document",                    MessageBoxButtons.OK,MessageBoxIcon.Error);                return false;            }        }
  6. В Visual Studio 2005 нажмите кнопку Начать отладку В меню Отладка меню.
  7. Нажмите кнопку Создайте книгу Excel. В окне сообщения сообщающее, что книга была успешно создана, и на рабочем столе будет создан файл HelloWorld.xlsx.
  8. В Excel 2007 откройте книгу. Обратите внимание, книга открывается в Excel 2007 и, Sheet1 лист содержит текст «Hello World».
  9. Нажмите кнопку Создать документ Word. В окне сообщения сообщающее, что документ был успешно создан, и на рабочем столе будет создан файл HelloWorld.docx.
  10. Откройте документ в Word 2007. Обратите внимание, что в Word открывает документ и документ содержит текст «Hello World».

Внимание! Эта статья переведена автоматически

Vlastnosti

ID článku: 931866 – Posledná kontrola: 06/18/2011 17:28:00 – Revízia: 4.0

Microsoft Visual Studio 2005 Professional Edition, Microsoft Visual Studio 2005 Standard Edition, Microsoft Office Excel 2007, Microsoft Office Word 2007, Microsoft .NET Framework 3.0, Microsoft Visual C# 2005 Express Edition

  • kbexpertiseinter kbhowto kbmt KB931866 KbMtru
Pripomienky