Я новичок в openxml, и я пытаюсь изучить основы. Я пытаюсь создать таблицы с разными свойствами, но не могу передать проблему. Мне нужно сделать все строки одинаковой ширины в таблице, игнорируя их количество столбцов. Это мой код:Как сделать все строки одинакового размера?
public static Table createTable(String[][] data)
{
Table table = new Table();
table.AppendChild<TableProperties>(createTableProps());
for (var i = 0; i < data.Length; i++)
{
var tr = new TableRow();
for (var j = 0; j < data[i].Length; j++)
{
int size = 1200/data[i].Length;
var tc = new TableCell();
tc.Append(new TableCellProperties(new TableCellWidth() { Type = TableWidthUnitValues.Dxa, Width = size.ToString()}));
Paragraph para = new Paragraph(runTools.getRun(16, "Tahoma", new Text(data[i][j])));
tc.Append(para);
// Assume you want columns that are automatically sized.
/* TableCellWidth tcw = new TableCellWidth{Type = TableWidthUnitValues.Auto };
tcw.Width = new StringValue("500");
tc.Append(new TableCellProperties(tcw));*/
tr.Append(tc);
}
table.Append(tr);
}
return table;
}
Это то, что мне нужно:
. Спасибо вам отличный ответ. У меня еще один короткий вопрос. Чтобы строки имели большую ширину, я добавил этот tc.Append (новый TableCellProperties (новый TableCellWidth() {Type = TableWidthUnitValues.Dxa, Width = "2400"})); и он работает, но TableWidthUnitValues.Auto не работает. Можете ли вы коротко объяснить разницу между nil, pct, auto, dxa. Какой из них лучше использовать для создания строк, они имеют большую ширину. –
Рад, что я мог помочь. Чтобы ответить на ваш второй вопрос, я рекомендую загрузить [спецификацию ECMA] (http://www.ecma-international.org/publications/standards/Ecma-376.htm) (раздел 17.18.90 охватывает значение «ST_TblWidth».) , По существу: 'auto' = автоматически рассчитывается ; 'dxa' = двадцатые точки (1/1440 дюйма) ; 'nil' - ноль ; 'pct' - процент от родительского – petelids