Экспорт DataTable в слово в C # - PullRequest
0 голосов
/ 28 мая 2018

Как создать новую страницу на каждой новой таблице?

Это означает, что таблица должна быть размещена на одной странице.Следующий код является примером кода, который выводит логин, но не создает новую страницу для каждой таблицы.

List<System.Data.DataTable> bbb = new List<System.Data.DataTable>();
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add("Columns 1");
dt.Columns.Add("Columns 2");
dt.Columns.Add("Columns 3");
dt.Rows.Add("aaa", "aaa", "aaa");
dt.Rows.Add("bbb", "bbb", "bbb");
dt.Rows.Add("ccc", "ccc", "ccc");
System.Data.DataTable dt2 = new System.Data.DataTable();
dt2.Columns.Add("Columns 5");
dt2.Rows.Add("aaa5");
bbb.Add(dt);
bbb.Add(dt2);
List<System.Data.DataTable> ListDataTable = new List<System.Data.DataTable>();
ListDataTable = bbb;
object objEndOfDoc = "\\endofdoc";
Microsoft.Office.Interop.Word.Document Wdc = new Microsoft.Office.Interop.Word.Document();
Microsoft.Office.Interop.Word.Range WordRange = Wdc.Bookmarks.get_Item(ref objEndOfDoc).Range;
Microsoft.Office.Interop.Word.Table wordTable;
for (int ListDataT = 0; ListDataT < ListDataTable.Count; ListDataT++)


{
    int iRowCount = ListDataTable[ListDataT].Rows.Count;
    int iColCount = ListDataTable[ListDataT].Columns.Count;
    object objMissing = System.Reflection.Missing.Value;
    wordTable = Wdc.Tables.Add(WordRange, iRowCount, iColCount, ref objMissing, ref objMissing);
    int iTableRow = 1;
    int iTableCol = 1;
    for (int i = 0; i < ListDataTable[ListDataT].Columns.Count; i++)
    {
        wordTable.Cell(iTableRow, iTableCol).Range.Text = ListDataTable[ListDataT].Columns[i].ColumnName;
        iTableCol++;
    }
    iTableRow++;
    for (int i = 0; i < ListDataTable[ListDataT].Rows.Count; i++)
    {
        iTableCol = 1;
        for (int j = 0; j < ListDataTable[ListDataT].Columns.Count; j++)
        {
            wordTable.Cell(iTableRow, iTableCol).Range.Text = ListDataTable[ListDataT].Rows[i][j].ToString();
            // Console.Write(dt.Rows[i][j].ToString());
            iTableCol++;
        }
        iTableRow++;
    }
    wordTable.Borders.Enable = 1;
    wordTable.set_Style("Light Grid - Accent 3");
}
Wdc.SaveAs("c://test.docx");
Wdc.Close();

1 Ответ

0 голосов
/ 29 мая 2018

Существует две возможности:

1) Отформатировать первую строку таблицы с форматированием абзаца «Разрыв страницы до».

2) Вставить разрыв страницы вручную между каждой таблицей (эквивалент клавиатуры: Shift + Enter).

Будучи профессионалом Word, я склонен использовать (1), если что-то не говорит против этого.Однако большинство людей склонны использовать (2), потому что это более очевидно / обнаружимо.

wordTable.Rows[1].Range.ParagraphFormat.PageBreakBefore = true;

ИЛИ

Word.Range rng = wordTable.Range;
rng.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
rng.InsertBreak(Word.WdBreakType.wdPageBreak);
...