C#(Winform)导出Word问题。

Allensignior 2013-04-22 10:07:19
小弟最近做的C#(Winform)导出Word,就是直接在后台创建了一个Word进行保存到本地。
需求是做个计划书似的东西,分四部分,第一部分logo图片,第二部分一个表格,第三部分是一个经过计算的文字介绍,第四部分是纯文字介绍。
现在有个问题就是我想让下面代码中 try块中部分的‘#region Middle’ 这部分的表格带边框线。
目前问题是我加上边框线之后‘#region Top’也会出现边框,不知道如何解决,求高手帮助
private void printToWord()
{
string filePath = "D:\\管理文档";
if (!Directory.Exists(filePath))//若文件夹不存在则新建文件夹
{
Directory.CreateDirectory(filePath); //新建文件夹
}
object path = filePath + "\\" + "计划书word测试.doc" + "";//导出地址
Object none = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document document = wordApp.Documents.Add(ref none, ref none, ref none, ref none);

//标题
wordApp.Application.Selection.TypeText("×××计划书");//标题名称
wordApp.Application.Selection.TypeParagraph();
try
{
#region Top
Table tableTop = document.Tables.Add(document.Paragraphs.Last.Range, 3, 7, ref none, ref none);
tableTop.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphThaiJustify;//设置对其方式

tableTop.Cell(1, 1).Range.InlineShapes.AddPicture(this.textBox3.Text.Trim(), false, true, tableTop.Cell(1, 1).Range.Paragraphs.Last.Range);
tableTop.Cell(1, 1).Application.ActiveDocument.InlineShapes[1].Width = 420;
tableTop.Cell(1, 1).Application.ActiveDocument.InlineShapes[1].Height = 110;
tableTop.Cell(1, 1).Merge(tableTop.Cell(1, 7));

tableTop.Cell(2, 1).Range.Text = " ";
tableTop.Cell(2, 1).Merge(tableTop.Cell(2, 7));

tableTop.Cell(3, 1).Range.Text = "一,×××";
tableTop.Cell(3, 1).Range.Font.Bold = 1;//1为粗体0为常规
tableTop.Cell(3, 1).Merge(tableTop.Cell(3, 7));//合并列
#endregion

#region Middle
Table tableMiddle = document.Tables.Add(document.Paragraphs.Last.Range, 2, 7, ref none, ref none);
tableMiddle.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphThaiJustify;//设置对其方式


tableMiddle.Cell(4, 1).Range.Text = "项目1";
tableMiddle.Cell(4, 1).Range.Font.Bold = 1;
tableMiddle.Cell(4, 2).Range.Text = "项目2";
tableMiddle.Cell(4, 2).Range.Font.Bold = 1;
tableMiddle.Cell(4, 3).Range.Text = "项目3";
tableMiddle.Cell(4, 3).Range.Font.Bold = 1;
tableMiddle.Cell(4, 4).Range.Text = "项目4";
tableMiddle.Cell(4, 4).Range.Font.Bold = 1;
tableMiddle.Cell(4, 5).Range.Text = "项目5";
tableMiddle.Cell(4, 5).Range.Font.Bold = 1;
tableMiddle.Cell(4, 6).Range.Text = "项目6";
tableMiddle.Cell(4, 6).Range.Font.Bold = 1;
tableMiddle.Cell(4, 7).Range.Text = "项目7";
tableMiddle.Cell(4, 7).Range.Font.Bold = 1;

tableMiddle.Cell(5, 1).Range.Text = "值1";
tableMiddle.Cell(5, 2).Range.Text = "值2";
tableMiddle.Cell(5, 3).Range.Text = "值3";
tableMiddle.Cell(5, 4).Range.Text = "值4";
tableMiddle.Cell(5, 5).Range.Text = "值5";
tableMiddle.Cell(5, 6).Range.Text = "值6";
tableMiddle.Cell(5, 7).Range.Text = "值7";
#endregion

#region Down
Table tableDown = document.Tables.Add(document.Paragraphs.Last.Range, 16, 7, ref none, ref none);
tableDown.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphThaiJustify;//设置对其方式

tableDown.Cell(6, 1).Range.Text = " ";//空行
tableDown.Cell(6, 1).Merge(tableTop.Cell(6, 7));

tableDown.Cell(7, 1).Range.Text = "二,××××";
tableDown.Cell(7, 1).Range.Font.Bold = 1;//1为粗体0为常规
tableDown.Cell(7, 1).Merge(tableDown.Cell(7, 7));

tableDown.Cell(8, 1).Range.Text = "子问题1:";
tableDown.Cell(8, 1).Merge(tableDown.Cell(8, 7));
tableDown.Cell(9, 1).Range.Text = " 答案1.";
tableDown.Cell(9, 1).Merge(tableDown.Cell(9, 7));

tableDown.Cell(10, 1).Range.Text = "子问题2:";
tableDown.Cell(10, 1).Merge(tableDown.Cell(10, 7));
tableDown.Cell(11, 1).Range.Text = " 答案2.";
tableDown.Cell(11, 1).Merge(tableDown.Cell(11, 7));

tableDown.Cell(16, 1).Range.Text = " ";//空行
tableDown.Cell(16, 1).Merge(tableDown.Cell(16, 7));

tableDown.Cell(17, 1).Range.Text = "三,×××××";
tableDown.Cell(17, 1).Range.Font.Bold = 1;//1为粗体0为常规
tableDown.Cell(17, 1).Merge(tableDown.Cell(17, 7));

tableDown.Cell(18, 1).Range.Text = "部分三相关文字介绍..........";
tableDown.Cell(18, 1).Merge(tableDown.Cell(18, 7));

tableDown.Cell(19, 1).Range.Text = " ";//空行
tableDown.Cell(19, 1).Merge(tableDown.Cell(19, 7));

tableDown.Cell(20, 1).Range.Text = "四,××××××";
tableDown.Cell(20, 1).Range.Font.Bold = 1;//1为粗体0为常规
tableDown.Cell(20, 1).Merge(tableDown.Cell(20, 7));//合并列

tableDown.Cell(21, 1).Range.Text = "部分四相关文字介绍..........";
tableDown.Cell(21, 1).Merge(tableDown.Cell(21, 7));//合并列
#endregion

document.SaveAs(ref path, ref none, ref none, ref none, ref none,
ref none, ref none, ref none, ref none, ref none, ref none, ref none,
ref none, ref none, ref none, ref none);
document.Close(ref none, ref none, ref none);
MessageBox.Show("数据已经成功导出到:" + filePath, "导出完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "温馨提示", MessageBoxButtons.OK);
}
finally
{
wordApp.Quit(ref none, ref none, ref none);
}
}
...全文
235 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
li365941471 2013-05-26
  • 打赏
  • 举报
回复
我发现现在越来越多的人操作office了
Allensignior 2013-04-26
  • 打赏
  • 举报
回复
已解决。办法很笨,每个单元格单独设置边框,或者每行单独设置。
Allensignior 2013-04-22
  • 打赏
  • 举报
回复
求大屎们分析!

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧