我正在尝试构建一个有一个datagridview的程序。最初我只是想打印这个网格,但后来决定我想要标题,预先写好的文本等等,我 想到 最简单的方法就是将它导出到一个word文档。
我的网格没有填充任何数据库或任何内容,它会根据程序中选择的选项填充。因此,您单击几个选项并填写几个价格,然后单击一个按钮,使用dataGridView1.Rows.Add();选项将添加到另一个选项卡页面上的网格中。
现在,我想将网格导出到word doc。我在这里经历过很多问题,曾经在msdn和所有常见的地方,但我找不到我想要的东西。我在msdn上发现了一个tut,它打开了一个新的doc,插入了标题和表格等,但我唯一可以使用的是
private void Export_Click(object sender, EventArgs e)
{
object oMissing = Missing.Value;
object oEndOfDoc = "\\endofdoc";
//Start Word and create a new document.
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
ref oMissing, ref oMissing);
}
但我不明白如何从网格导出?
答案 0 :(得分:0)
最后管理它 - 这是我对任何有兴趣的人最终得到的结果;
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
object oTemplate = "C:/Users/Sean/Documents/Custom Office Templates/BMW Invoice.dotx";
oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing,
ref oMissing, ref oMissing);
Object start = Type.Missing;
Object end = Type.Missing;
object missing = System.Type.Missing;
Microsoft.Office.Interop.Word.Range rng = oDoc.Range(ref start, ref end);
Microsoft.Office.Interop.Word.Table tbl = oDoc.Tables.Add(rng, dataGridView1.Rows.Count, dataGridView1.Columns.Count, ref oMissing, ref oMissing);
Microsoft.Office.Interop.Word.Row newRow = oDoc.Tables[1].Rows.Add(ref missing);
newRow.Range.Font.Bold = 0;
newRow.Range.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphLeft;
tbl.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
tbl.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleDouble;
tbl.Cell(0, 0).WordWrap = false;
tbl.Cell(0, 0).FitText = true;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (i == dataGridView1.Rows.Count - 1)
MessageBox.Show("Successfully Exported");
else
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
tbl.Cell(i + 1, j + 1).Range.Text = dataGridView1.Rows[i].Cells[j].Value.ToString();
}
}
}