Я создаю документ Word с помощью OpenXml, но у меня возникли проблемы с созданием разделов с несколькими столбцами. Я хотел бы иметь возможность сказать: «С этого момента весь контент будет располагаться в x столбцах», но я не могу понять, как это сделать. Документация скудна, и я не могу понять, как это сделать. Я попытался создать метод CreateMulticolumnSection, но кажется, что количество столбцов в последнем свойстве секции применяется ко всему документу.
Вот что я пытался сделать.
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using DocumentFormat.OpenXml;
using System;
namespace WordDocExample
{
class Program
{
static void Main(string[] args)
{
Test();
}
private static void Test()
{
string str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce venenatis felis at lacus volutpat, ut pretium nibh malesuada. Duis sollicitudin iaculis sodales. Phasellus molestie molestie ante, ac feugiat lectus dapibus at. Quisque non varius nunc. Sed non nibh interdum, interdum nulla sit amet, fringilla magna. Quisque lacinia fermentum libero vel sagittis. Aenean vestibulum sed velit eu vestibulum. Duis egestas, risus efficitur tempus feugiat, lacus ipsum tincidunt nunc, et pretium dui sapien sed orci. Quisque cursus egestas vehicula. Vestibulum luctus ut tellus nec mollis";
// Create a new document.
using (WordprocessingDocument doc = WordprocessingDocument.Create(@"C:\Users\emanu\Desktop\GFAS TMP\Report.docx", WordprocessingDocumentType.Document))
{
doc.AddMainDocumentPart();
doc.MainDocumentPart.Document = new Document();
doc.MainDocumentPart.Document.Body = new Body();
Body bd = doc.MainDocumentPart.Document.Body;
// Create a single column section
CreateMulticolumnSection(bd, 1);
bd.Append(new Paragraph(new Run(new Text(str))));
// Create a 2 column section
CreateMulticolumnSection(bd, 2);
// Add a table
AddATable(bd);
// Add a text in the same section
bd.Append(new Paragraph(new Run(new Text("Here is a 2 column section!!!"))));
// Go back to 1 column section
CreateMulticolumnSection(bd, 1);
// Add a text
bd.Append(new Paragraph(new Run(new Text(str))));
// Save the document
doc.MainDocumentPart.Document.Save();
}
}
private static void AddATable(Body bd)
{
Table table = new Table();
TableProperties tableProperties = new TableProperties(
new TableBorders(
new TopBorder { Val = new EnumValue(BorderValues.Single), Size = 12 },
new BottomBorder { Val = new EnumValue(BorderValues.Single), Size = 12 },
new LeftBorder { Val = new EnumValue(BorderValues.Single), Size = 12 },
new RightBorder { Val = new EnumValue(BorderValues.Single), Size = 12 },
new InsideHorizontalBorder { Val = new EnumValue(BorderValues.Single), Size = 12 },
new InsideVerticalBorder { Val = new EnumValue(BorderValues.Single), Size = 12 }
)
);
table.AppendChild(tableProperties);
TableGrid tableGrid = new TableGrid();
tableGrid.Append(new GridColumn { Width = "2400" });
tableGrid.Append(new GridColumn { Width = "2400" });
table.AppendChild(tableGrid);
for (int i = 1; i
Подробнее здесь: [url]https://stackoverflow.com/questions/78720887/how-to-change-the-layout-columns-number-in-a-part-of-the-word-document-in-openxm[/url]
Я создаю документ Word с помощью OpenXml, но у меня возникли проблемы с созданием разделов с несколькими столбцами. Я хотел бы иметь возможность сказать: «С этого момента весь контент будет располагаться в x столбцах», но я не могу понять, как это сделать. Документация скудна, и я не могу понять, как это сделать. Я попытался создать метод CreateMulticolumnSection, но кажется, что количество столбцов в последнем свойстве секции применяется ко всему документу. Вот что я пытался сделать.[code]using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; using DocumentFormat.OpenXml; using System;
namespace WordDocExample { class Program { static void Main(string[] args) { Test(); }
private static void Test() { string str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce venenatis felis at lacus volutpat, ut pretium nibh malesuada. Duis sollicitudin iaculis sodales. Phasellus molestie molestie ante, ac feugiat lectus dapibus at. Quisque non varius nunc. Sed non nibh interdum, interdum nulla sit amet, fringilla magna. Quisque lacinia fermentum libero vel sagittis. Aenean vestibulum sed velit eu vestibulum. Duis egestas, risus efficitur tempus feugiat, lacus ipsum tincidunt nunc, et pretium dui sapien sed orci. Quisque cursus egestas vehicula. Vestibulum luctus ut tellus nec mollis";
// Create a new document. using (WordprocessingDocument doc = WordprocessingDocument.Create(@"C:\Users\emanu\Desktop\GFAS TMP\Report.docx", WordprocessingDocumentType.Document)) { doc.AddMainDocumentPart(); doc.MainDocumentPart.Document = new Document(); doc.MainDocumentPart.Document.Body = new Body(); Body bd = doc.MainDocumentPart.Document.Body;
// Create a single column section CreateMulticolumnSection(bd, 1); bd.Append(new Paragraph(new Run(new Text(str))));
// Create a 2 column section CreateMulticolumnSection(bd, 2);
// Add a table AddATable(bd);
// Add a text in the same section bd.Append(new Paragraph(new Run(new Text("Here is a 2 column section!!!"))));
// Go back to 1 column section CreateMulticolumnSection(bd, 1); // Add a text bd.Append(new Paragraph(new Run(new Text(str))));
// Save the document doc.MainDocumentPart.Document.Save(); } }
private static void AddATable(Body bd) { Table table = new Table(); TableProperties tableProperties = new TableProperties( new TableBorders( new TopBorder { Val = new EnumValue(BorderValues.Single), Size = 12 }, new BottomBorder { Val = new EnumValue(BorderValues.Single), Size = 12 }, new LeftBorder { Val = new EnumValue(BorderValues.Single), Size = 12 }, new RightBorder { Val = new EnumValue(BorderValues.Single), Size = 12 }, new InsideHorizontalBorder { Val = new EnumValue(BorderValues.Single), Size = 12 }, new InsideVerticalBorder { Val = new EnumValue(BorderValues.Single), Size = 12 } ) ); table.AppendChild(tableProperties); TableGrid tableGrid = new TableGrid(); tableGrid.Append(new GridColumn { Width = "2400" }); tableGrid.Append(new GridColumn { Width = "2400" }); table.AppendChild(tableGrid); for (int i = 1; i
Я создал новый документ Word на основе существующего документа Word в проекте надстройки Word Blazor. Я хочу добавить содержимое в новый документ Word, а также загрузить панель задач в новый документ Word, аналогичный существующей панели задач Word....
Я создал новый документ Word на основе существующего документа Word в проекте надстройки Word Blazor. Я хочу добавить содержимое в новый документ Word, а также загрузить панель задач в новый документ Word, аналогичный существующей панели задач Word....
Я редактирую текстовый документ на C#, используя DocumentFormat.OpenXML и заменяя/удаляя абзацы в зависимости от текстового содержимого. Проблема в том, что в один из документов вставлен разрыв страницы, который отображается нормально, если включены...
СОДЕРЖАНИЕ СОДЕРЖАНИЯ НЕ обновляется на First Open. Даже с и Dirty = true в поле Microsoft Word не будет обновлять TOC (таблица) автоматически, когда документ открывается впервые после включения редактирования. /> Что я попробовал
У меня есть шаблон шрифта Calibri (жирный), размер шрифта 11. Я вставляю абзац с пробегом. Моя первоначальная проблема заключалась в том, что где бы я ни вставлял абзац в документ, шрифт и размер шрифта отличались от шаблона. Я хочу, чтобы он был...