将DataTable导出为c#

时间:2018-05-28 11:55:00

标签: c# ms-word office-interop

如何在每个新表上创建新页面?

这意味着该表应放在一个页面上。 以下代码是输出登录的示例代码,但不为每个表创建新页面。

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 :(得分:0)

有两种可能性:

1)使用段落格式&#34; Page Break Before&#34;格式化表格的第一行。

2)在每个表之间插​​入手动分页符(等效键盘:Shift + Enter)。

作为一个单词专业人士,我倾向于使用(1)除非有人反对它。然而,大多数人倾向于使用(2),因为它更明显/可被发现。

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

OR

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