Бібліотека .NET для створення документів для обробки текстів

Читайте, записуйте, маніпулюйте та конвертуйте файли Word, створюйте таблиці в DOCX за допомогою Open Source .NET API.

Open XML SDK — це API із відкритим вихідним кодом, розроблений корпорацією Майкрософт і розповсюджений відповідно до коду поведінки з відкритим кодом корпорації Майкрософт для маніпулювання документами обробки текстів, зокрема DOCXDOTXDOCM,  формати файлів DOTM

Використовуючи API, ви можете додавати текст, верхній колонтитул, нижній колонтитул, кінцеві виноски, виноски, стилі, теми тощо. Це дозволяє створювати високопродуктивні документи Word і отримувати з них дані. API підтримує різні платформи .NET, включаючи .NET 3.5, .NET 4.0, .NET 4.6 і .NET Standard 1.3.

Previous Next

Початок роботи з Open XML SDK

Перш за все, вам потрібна .NET Framework 3.5 або вище. Після цього завантажте репозиторій вручну з GitHub або інсталюйте його з NuGet.

Встановлення Open XML SDK від NuGet

 Install-Package DocumentFormat.OpenXml

Керуйте файлом DOCX за допомогою C#

Open XML SDK дозволяє програмістам .NET створювати, а також змінювати обробку текстів із власних програм .NET. Щоб змінити існуючий файл, ви можете відкрити наявний файл і додати зміни, як-от текст, абзаци, таблиці тощо.

Додати абзац у DOCX - C#

// Open an existing word processing document
using (WordprocessingDocument wordprocessingDocument = WordprocessingDocument.Open("fileformat.docx", true))
{
  Body body = wordprocessingDocument.MainDocumentPart.Document.Body;
  // Add paragraph
  Paragraph para = body.AppendChild(new Paragraph());
  Run run = para.AppendChild(new Run());
  run.AppendChild(new Text("File Format Developer Guide"));
}

Створення таблиці в DOCX за допомогою C#

API дозволяє розробникам додавати таблицю в документи обробки тексту. Ви можете додати таблицю, налаштувати властивості таблиці, налаштувати сітку таблиці та властивості сітки стовпців. Крім того, ви можете керувати клітинками та рядками таблиці за допомогою класів TableCell і TableRow відповідно.

Створення таблиці в DOCX - C#

// Open an existing word processing document
using (WordprocessingDocument wordprocessingDocument = WordprocessingDocument.Open("fileformat.docx", true))
{
  Body body = wordprocessingDocument.MainDocumentPart.Document.Body;
  // Create a table.
  Table table = new Table();
  // Set the style and width for the table.
  TableProperties tableProperties = new TableProperties();
  TableStyle tableStyle = new TableStyle() { Val = "TableGrid" };
  // Make the table width 100% of the page width.
  TableWidth tableWidth = new TableWidth() { Width = "5000", Type = TableWidthUnitValues.Pct };
  // Apply
  tableProperties.Append(tableStyle, tableWidth);
  table.AppendChild(tableProperties);
  // Add columns
  TableGrid tableGrid = new TableGrid(new GridColumn(), new GridColumn(), new GridColumn());
  table.AppendChild(tableGrid);
  // Create 1 row to the table.
  TableRow tableRow = new TableRow();
  // Add a cell to each column in the row.
  TableCell tableCell = new TableCell(new Paragraph(new Run(new Text("Column 1"))));
  TableCell tableCell1 = new TableCell(new Paragraph(new Run(new Text("Column 2"))));
  //Append data
  tableRow.Append(tableCell, tableCell1);
  // Add row to the table.
  table.AppendChild(tableRow);
  // Add the table to the document
  body.AppendChild(table);
}

Верхні та нижні колонтитули в текстовому документі

Правильна організація документів дуже важлива і є потребою кожної організації. Верхні та нижні колонтитули є ключовими частинами документів, які можуть допомогти належним чином організувати текстові документи, розміщуючи додаткову інформацію, таку як відповідні дати, теми, ім’я автора, зображення, номери сторінок тощо. Він також підтримує додавання кількох заголовків.

Керування заголовками в документі Word

 
public static void ApplyHeader(WordprocessingDocument doc)
{
  // Get the main document part.
  MainDocumentPart mainDocPart = doc.MainDocumentPart;
  HeaderPart headerPart1 = mainDocPart.AddNewPart("r97");
  Header header1 = new Header();
  Paragraph paragraph1 = new Paragraph(){ };
  Run run1 = new Run();
  Text text1 = new Text();
  text1.Text = "Header stuff";
  run1.Append(text1);
  paragraph1.Append(run1);
  header1.Append(paragraph1);
  headerPart1.Header = header1;
  SectionProperties sectionProperties1 = mainDocPart.Document.Body.Descendants().FirstOrDefault();
  if (sectionProperties1 == null)
  {
  sectionProperties1 = new SectionProperties() { };
  mainDocPart.Document.Body.Append(sectionProperties1);
  }
  HeaderReference headerReference1 = new HeaderReference() { Type = HeaderFooterValues.Default, Id = "r97" };
  sectionProperties1.InsertAt(headerReference1,0);
}

Керування колонтитулами в документі Word

 
public static void ApplyFooter(WordprocessingDocument doc)
{
  // Get the main document part.
  MainDocumentPart mainDocPart = doc.MainDocumentPart;
  FooterPart footerPart1 = mainDocPart.AddNewPart("r98");
  Footer footer1 = new Footer();
  Paragraph paragraph1 = new Paragraph() { };
  Run run1 = new Run();
  Text text1 = new Text();
  text1.Text = "Footer stuff";
  run1.Append(text1);
  paragraph1.Append(run1);
  footer1.Append(paragraph1);
  footerPart1.Footer = footer1;
  SectionProperties sectionProperties1 = mainDocPart.Document.Body.Descendants().FirstOrDefault();
  if (sectionProperties1 == null)
  {
    sectionProperties1 = new SectionProperties() { };
    mainDocPart.Document.Body.Append(sectionProperties1);
  }
  FooterReference footerReference1 = new FooterReference() { Type = DocumentFormat.OpenXml.Wordprocessing.HeaderFooterValues.Default, Id = "r98" };
  sectionProperties1.InsertAt(footerReference1, 0);
}
 Українська