MiniExcel – невозможно динамически заполнять теги ExcelC#

Место общения программистов C#
Ответить
Anonymous
 MiniExcel – невозможно динамически заполнять теги Excel

Сообщение Anonymous »

Цель — заполнить столбцы, созданные динамически. Я не могу использовать класс с заранее созданными полями, потому что в моем случае сначала нужно найти теги.
Ожидания:
excel:

{{model.name}} {{manufacturer.name}}

После обработки:
A1 B1
A2 B2
A3 B3
A4 B4

Реальность:
код:
var value = new Dictionary
{
["model"] = new[]
{
new { name = "A1" },
new { name = "A2" },
new { name = "A3" },
new { name = "A4" }
},

["manufacturer"] = new[]
{
new { name = "B1" },
new { name = "B2" },
new { name = "B3" },
new { name = "B4" },
},
};

Excel:
{{model.name}} {{manufacturer.name}}

Результат:
B1 {{manufacturer.name}}
B2 {{manufacturer.name}}
B3 {{manufacturer.name}}
B4 {{manufacturer.name}}

Другой подход с использованием нескольких кодов SaveAsByTemplateAsync()
:MemoryStream memoryStream = new MemoryStream(0);

memoryStream.Write(bytes, 0, bytes.Length);

var value = new Dictionary
{
["model"] = new[]
{
new { name = "A1" },
new { name = "A2" },
new { name = "A3" },
new { name = "A4" }
},
};

byte[] copiedData = memoryStream.ToArray();
await memoryStream.SaveAsByTemplateAsync(copiedData, value);

memoryStream.Position = 0;
MemoryStream clonedStream = new MemoryStream();
await memoryStream.CopyToAsync(clonedStream);
clonedStream.Position = 0;

await memoryStream.DisposeAsync();

byte[] copiedData1 = clonedStream.ToArray();

var value1 = new Dictionary
{
["manufacturer"] = new[]
{
new { name = "B1" },
new { name = "B2" },
new { name = "B3" },
new { name = "B4" }
},
};

await clonedStream.SaveAsByTemplateAsync(copiedData1, value1);

Результат:
A1 B1
A1 B2
A1 B3
A1 B4
A2 B1
A2 B2
A2 B3
A2 B4
A3 B1
A3 B2
A3 B3
A3 B4
A4 B1
A4 B2
A4 B3
A4 B4


Подробнее здесь: https://stackoverflow.com/questions/793 ... ynamically
Ответить

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

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

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

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

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