Проблема при вставке изображений в таблицыC#

Место общения программистов C#
Ответить
Anonymous
 Проблема при вставке изображений в таблицы

Сообщение Anonymous »

Я пытаюсь реализовать функцию C#, которая автоматически генерирует таблицы в Word на основе атрибутов и свойств, принадлежащих классам в моем проекте. Генерация документа происходит при нажатии кнопки на форме. Если в таблице я встречаю пути, соответствующие изображению, я хочу отобразить изображение вместо пути. Поэтому у меня есть элемент управления, который в ранее упомянутом случае вызывает метод, создающий строку с изображением; в противном случае создается обычная строка. Все работает, но когда я открываю файл, то получаю сообщение об ошибке, показанное на рисунке.
Сообщение: Я закомментировал весь код, связанный с вставкой изображений, и создал новый метод вставки изображения с рабочего стола. Даже когда я закомментирую метод тестирования (чтобы не осталось кода, связанного с вставкой изображения), документ открывается. Однако когда я использую тестовый метод (InsertImageIntoWord), я получаю ту же ошибку при открытии документа Word.
Поэтому очевидно, что проблема вызвана кодом, содержащимся в InsertImageIntoWord.
В коде нет ошибок и исключений, изображения доступны, я использую последнюю версию DocumentFormat.OpenXml.

Код: Выделить всё

public void InsertImageIntoWord(MainDocumentPart mainPart, Body body, string imagePath)
{
ImagePart imagePart = mainPart.AddImagePart(ImagePartType.Png);

using (FileStream stream = new FileStream(imagePath, FileMode.Open))
{
imagePart.FeedData(stream);
}

string imagePartId = mainPart.GetIdOfPart(imagePart);

var element =
new Drawing(
new DW.Inline(
new DW.Extent() { Cx = 500000L, Cy = 500000L }, // Dimensioni dell'immagine
new DW.EffectExtent()
{
LeftEdge = 0L,
TopEdge = 0L,
RightEdge = 0L,
BottomEdge = 0L
},
new DW.DocProperties()
{
Id = (UInt32Value)1U,
Name = "Immagine"
},
new DW.NonVisualGraphicFrameDrawingProperties(
new A.GraphicFrameLocks() { NoChangeAspect = true }),
new A.Graphic(
new A.GraphicData(
new A.Picture(
new A.NonVisualPictureProperties(
new A.NonVisualDrawingProperties()
{
Id = (UInt32Value)0U,
Name = "Picture"
},
new A.NonVisualPictureDrawingProperties()),
new A.BlipFill(
new A.Blip()
{
Embed = imagePartId,
CompressionState = A.BlipCompressionValues.Print
},
new A.Stretch(new A.FillRectangle())),
new A.ShapeProperties(
new A.Transform2D(
new A.Offset() { X = 0L, Y = 0L },
new A.Extents() { Cx = 990000L, Cy = 792000L }),
new A.PresetGeometry(new A.AdjustValueList())
{ Preset = A.ShapeTypeValues.Rectangle })))
)
{ })
);

Paragraph paragraph = new Paragraph(new Run(element));

body.Append(paragraph);
}

public void GenerateDocxDocument(TreeView treeViewFunction)
{

using (WordprocessingDocument wordDocument = WordprocessingDocument.Create($"Prova_documento.docx", WordprocessingDocumentType.Document))
{

MainDocumentPart mainPart = wordDocument.AddMainDocumentPart();
mainPart.Document = new Document();

Body body = new Body();

foreach (var hf in HydFunctionList)
{
...

if (hf is Cylinder cyl)
{
IterateClassProperties(cyl, mainPart, table);
}
else if (hf is MasterValve mv)
{
IterateClassProperties(mv, mainPart, table);
}

body.Append(table);
body.Append(new Paragraph(new Run(new Text(""))));

}
InsertImageIntoWord(mainPart, body, imagePath);
mainPart.Document.Append(body);
mainPart.Document.Save();
}
}
Ошибка слова
Это сообщение об ошибке появляется вместе с этим кодом, но это последняя версия, которую я реализовал, и я получал ее даже без недавних изменений. . Я не понимаю, проблема в коде или, например, в способе доступа к изображениям, или в чем-то внешнем по отношению к коду.

Подробнее здесь: https://stackoverflow.com/questions/791 ... nto-tables
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»