DocX を使ってみる - 4 - ひっそりと生きるプログラマのブログ
前回に引き続き、今回は表形式(Table)の出力についてです。
説明するより実装を確認した方が分かり易いので、以下の通りです。
一部の変数には適切なパスを設定して下さい。
結構、簡単に Table を作れるのでなかなか面白いですね。
static void Main(string[] args) { using (var document = DocX.Create(filePath)) { DataTableSample(document); } } private static void DataTableSample(DocX document) { var dataTable = CreateDataTable(); CreateTable(document, dataTable); } private static DataTable CreateDataTable() { var result = new DataTable("Sample Table Name"); result.Columns.Add("No"); result.Columns.Add("Name"); result.Columns.Add("Summary"); for (int index = 1; index <= 10; index++) { var name = "name" + index; var summary = "summary" + index; result.Rows.Add(index, name, summary); } return result; } private static void CreateTable(DocX document, DataTable dataTable) { // ヘッダー行も含めて出力するので、 // 行数 + 1 で table を作成する。 var table = document.AddTable( dataTable.Rows.Count + 1, dataTable.Columns.Count); document.InsertParagraph(dataTable.TableName); // ヘッダーの出力 { var currentRow = table.Rows[0]; for (int index = 0; index < dataTable.Columns.Count; index++) { var paragraph = currentRow.Cells[index].Paragraphs.First(); paragraph.Append(Convert.ToString(dataTable.Columns[index].ColumnName)); } } // データの出力 { for (int x = 0; x < dataTable.Rows.Count; x++) { var currentRow = table.Rows[x + 1]; for (int y = 0; y < dataTable.Columns.Count; y++) { var paragraph = currentRow.Cells[y].Paragraphs.First(); paragraph.Append(Convert.ToString(dataTable.Rows[x][y])); } } } document.InsertTable(table); }