| | B | |
| A -----------------
| | C | |
|----------------------
上面是表格的大概样子,A是跨行的,B和C分别在两行上, 我需要用程序动态的增加像B和C那样的行
doc.Tables[1].Rows.Add(ref beforRow); 这句代码只是对于很规则的表格
我发现网上关于这个功能的信息不多,请问各位有没有知道或了解些的?????
O(∩_∩)O谢谢~
39 个解决方案
#1
沉了,帮顶!
#2
#3
#4
谢谢楼上支持啊!有没有人会啊?
#5
B和C难道不是列吗 到底是要加什么
#6
可以说,很难!!!
#7
5# 我的意思是增加行,像B所在的行那样的行,像C所在的行那样
#8
#6 你用到过?你是怎么解决的?
#9
关注。
#10
又沉了~
#11
没做过 帮顶
#12
谢谢哦~
#13
又沉了~~~~(>_<)~~~~
#14
圣诞快乐
帮顶下~~
帮顶下~~
#15
又沉了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#16
\\\|///
\\ .-.- //
. ( .@.@ )
+-------oOOo-----(_)-----oOOo---------+
| |
| 圣 诞 快 乐!!! |
| |
+---------------------Oooo------------+
是不是大家都忙着过节呢?
#17
我真的不会
#18
LZ 看例子A所在行是合并列吧,提个思路,先做添加行的操作,非合并的行,创建好有规则的表格后,对需要合并的行进行合并操作,再对每行的具体每列赋对应的值。对合并了多个列的行,cursor移动到该行时,只要赋值后,效果如例子所示。
#19
1 数值存储在内存变量中;
2 生成规则表格;
3 合并需要合并的行或列;
4 对应单元格赋值;
2 生成规则表格;
3 合并需要合并的行或列;
4 对应单元格赋值;
#20
mony977 谢谢啊!
你说的思路我明白
我发帖的时候画表格时只画了个大概,其实我的表格里上上下下的有好几个像那样有合并的行的,我要操作的是中间的一个。
#21
word本身就是加密的东东。
恐怕很难...........
恐怕很难...........
#22
#21 什么加密?听不懂啊……
#23
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Microsoft.Office.Interop.Word;
namespace WindowsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
CreateWordFile("c:\\dd.doc");
}
public string CreateWordFile(string CheckedInfo)
{
string message = "";
try
{
Object Nothing = System.Reflection.Missing.Value;
Directory.CreateDirectory("C:/CNSI"); //创建文件所在目录
string name = "CNSI_" + DateTime.Now.ToLongDateString()+".doc";
object filename = "C://CNSI//" + name; //文件保存路径
//创建Word文档
Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.ApplicationClass();
Microsoft.Office.Interop.Word.Document WordDoc = WordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);
//添加页眉
WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;
WordApp.ActiveWindow.ActivePane.Selection.InsertAfter("[页眉内容]");
WordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;//设置右对齐
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;//跳出页眉设置
WordApp.Selection.ParagraphFormat.LineSpacing = 15f;//设置文档的行间距
//移动焦点并换行
object count = 14;
object WdLine = Microsoft.Office.Interop.Word.WdUnits.wdLine;//换一行;
WordApp.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移动焦点
WordApp.Selection.TypeParagraph();//插入段落
//文档中创建表格
Microsoft.Office.Interop.Word.Table newTable = WordDoc.Tables.Add(WordApp.Selection.Range, 12, 3, ref Nothing, ref Nothing);
//设置表格样式
newTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleThickThinLargeGap;
newTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
newTable.Columns[1].Width = 100f;
newTable.Columns[2].Width = 220f;
newTable.Columns[3].Width = 105f;
//填充表格内容
newTable.Cell(1, 1).Range.Text = "产品详细信息表";
newTable.Cell(1, 1).Range.Bold = 2;//设置单元格中字体为粗体
//合并单元格
newTable.Cell(1, 1).Merge(newTable.Cell(1, 3));
WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
WordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居中
//填充表格内容
newTable.Cell(2, 1).Range.Text = "产品基本信息";
newTable.Cell(2, 1).Range.Font.Color = Microsoft.Office.Interop.Word.WdColor.wdColorDarkBlue;//设置单元格内字体颜色
//合并单元格
newTable.Cell(2, 1).Merge(newTable.Cell(2, 3));
WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
//填充表格内容
newTable.Cell(3, 1).Range.Text = "品牌名称:";
newTable.Cell(3, 2).Range.Text = "BrandName";
//纵向合并单元格
newTable.Cell(3, 3).Select();//选中一行
object moveUnit = Microsoft.Office.Interop.Word.WdUnits.wdLine;
object moveCount = 5;
object moveExtend = Microsoft.Office.Interop.Word.WdMovementType.wdExtend;
WordApp.Selection.MoveDown(ref moveUnit, ref moveCount, ref moveExtend);
WordApp.Selection.Cells.Merge();
//插入图片
string FileName = @"c:\picture.jpg";//图片所在路径
object LinkToFile = false;
object SaveWithDocument = true;
object Anchor = WordDoc.Application.Selection.Range;
WordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor);
WordDoc.Application.ActiveDocument.InlineShapes[1].Width = 100f;//图片宽度
WordDoc.Application.ActiveDocument.InlineShapes[1].Height = 100f;//图片高度
//将图片设置为四周环绕型
Microsoft.Office.Interop.Word.Shape s = WordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape();
s.WrapFormat.Type = Microsoft.Office.Interop.Word.WdWrapType.wdWrapSquare;
newTable.Cell(12, 1).Range.Text = "产品特殊属性";
newTable.Cell(12, 1).Merge(newTable.Cell(12, 3));
//在表格中增加行
WordDoc.Content.Tables[1].Rows.Add(ref Nothing);
WordDoc.Paragraphs.Last.Range.Text = "文档创建时间:" + DateTime.Now.ToString();//“落款”
WordDoc.Paragraphs.Last.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;
//文件保存
WordDoc.SaveAs(ref filename, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing);
WordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
WordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
message=name+"文档生成成功,以保存到C:CNSI下";
}
catch
{
message = "文件导出异常!";
}
return message;
}
}
}
#24
23#chenmengdx
(萧萧) 谢谢你啊!
有纵向合并单元格后,那下面的代码还能用吗?
我的会提示:
System.Runtime.InteropServices.COMException (0x800A1767): 无法访问此集合中单独的行,因为表格有纵向合并的单元格。
(萧萧) 谢谢你啊!
//纵向合并单元格
newTable.Cell(3, 3).Select();//选中一行
object moveUnit = Microsoft.Office.Interop.Word.WdUnits.wdLine;
object moveCount = 5;
object moveExtend = Microsoft.Office.Interop.Word.WdMovementType.wdExtend;
WordApp.Selection.MoveDown(ref moveUnit, ref moveCount, ref moveExtend);
WordApp.Selection.Cells.Merge();
有纵向合并单元格后,那下面的代码还能用吗?
//在表格中增加行
WordDoc.Content.Tables[1].Rows.Add(ref Nothing);
我的会提示:
System.Runtime.InteropServices.COMException (0x800A1767): 无法访问此集合中单独的行,因为表格有纵向合并的单元格。
#25
#26
楼主你在WORD 里面写东西好麻烦,而且想要的表格效果都实现不了。我现在做的项目就是这样,所以我用的是在HTML也上把表格都写好了,想要什么效果都行,之后把html也转换成word格式。这样可以方便做什么效果的都行。楼主想这样实现吗?想的话我把代码给你发过去,给我分就好了。
#27
#26 lifeng_2009
我的WORD表格行数是不固定的,根据数据库中的数据量而定,所以就需要增加行哦~
我的WORD表格行数是不固定的,根据数据库中的数据量而定,所以就需要增加行哦~
#28
你可以用Repeater 绑定数据库啊 动态生成表格,有几条数据生成几个TD 就行了。
#29
#26 lifeng_2009
我的文档还需要合并行,Repeater不能合并行吧?好难( ⊙ o ⊙ )啊!
我的文档还需要合并行,Repeater不能合并行吧?好难( ⊙ o ⊙ )啊!
#30
看你要显示什么信息了
------------------------------------------------------------
| | B | |
| A -----------------
| | C | |
|----------------------
这个abc是类似与ID NAME AGE
之后就是下一条信息了 如 1 小李 23 ,2 小王 22
还是abc后面还有d啊
你把多条信息的都列出来
------------------------------------------------------------
| | B | |
| A -----------------
| | C | |
|----------------------
这个abc是类似与ID NAME AGE
之后就是下一条信息了 如 1 小李 23 ,2 小王 22
还是abc后面还有d啊
你把多条信息的都列出来
#31
谢谢各位了,我的问题解决了,用的拆分单元格,哈哈,知道了吧?
#32
楼主散点分吧。没有分了!
#33
doc.Tables[3].Cell(18, 2).Split(ref rownum, ref colnum);
然后对相应的单元格加内容
#34
#33 谢谢啊
你的是拆分单元格的代码
我就是这样实现在有合并行的表格中插入行的
你的是拆分单元格的代码
我就是这样实现在有合并行的表格中插入行的
#35
结帖~
#36
Oh,my god 还丢了一位……
#37
借用了,好东西
#38
标记一下
#39
#1
沉了,帮顶!
#2
#3
#4
谢谢楼上支持啊!有没有人会啊?
#5
B和C难道不是列吗 到底是要加什么
#6
可以说,很难!!!
#7
5# 我的意思是增加行,像B所在的行那样的行,像C所在的行那样
#8
#6 你用到过?你是怎么解决的?
#9
关注。
#10
又沉了~
#11
没做过 帮顶
#12
谢谢哦~
#13
又沉了~~~~(>_<)~~~~
#14
圣诞快乐
帮顶下~~
帮顶下~~
#15
又沉了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#16
\\\|///
\\ .-.- //
. ( .@.@ )
+-------oOOo-----(_)-----oOOo---------+
| |
| 圣 诞 快 乐!!! |
| |
+---------------------Oooo------------+
是不是大家都忙着过节呢?
#17
我真的不会
#18
LZ 看例子A所在行是合并列吧,提个思路,先做添加行的操作,非合并的行,创建好有规则的表格后,对需要合并的行进行合并操作,再对每行的具体每列赋对应的值。对合并了多个列的行,cursor移动到该行时,只要赋值后,效果如例子所示。
#19
1 数值存储在内存变量中;
2 生成规则表格;
3 合并需要合并的行或列;
4 对应单元格赋值;
2 生成规则表格;
3 合并需要合并的行或列;
4 对应单元格赋值;
#20
mony977 谢谢啊!
你说的思路我明白
我发帖的时候画表格时只画了个大概,其实我的表格里上上下下的有好几个像那样有合并的行的,我要操作的是中间的一个。
#21
word本身就是加密的东东。
恐怕很难...........
恐怕很难...........
#22
#21 什么加密?听不懂啊……
#23
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Microsoft.Office.Interop.Word;
namespace WindowsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
CreateWordFile("c:\\dd.doc");
}
public string CreateWordFile(string CheckedInfo)
{
string message = "";
try
{
Object Nothing = System.Reflection.Missing.Value;
Directory.CreateDirectory("C:/CNSI"); //创建文件所在目录
string name = "CNSI_" + DateTime.Now.ToLongDateString()+".doc";
object filename = "C://CNSI//" + name; //文件保存路径
//创建Word文档
Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.ApplicationClass();
Microsoft.Office.Interop.Word.Document WordDoc = WordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);
//添加页眉
WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;
WordApp.ActiveWindow.ActivePane.Selection.InsertAfter("[页眉内容]");
WordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;//设置右对齐
WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument;//跳出页眉设置
WordApp.Selection.ParagraphFormat.LineSpacing = 15f;//设置文档的行间距
//移动焦点并换行
object count = 14;
object WdLine = Microsoft.Office.Interop.Word.WdUnits.wdLine;//换一行;
WordApp.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移动焦点
WordApp.Selection.TypeParagraph();//插入段落
//文档中创建表格
Microsoft.Office.Interop.Word.Table newTable = WordDoc.Tables.Add(WordApp.Selection.Range, 12, 3, ref Nothing, ref Nothing);
//设置表格样式
newTable.Borders.OutsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleThickThinLargeGap;
newTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
newTable.Columns[1].Width = 100f;
newTable.Columns[2].Width = 220f;
newTable.Columns[3].Width = 105f;
//填充表格内容
newTable.Cell(1, 1).Range.Text = "产品详细信息表";
newTable.Cell(1, 1).Range.Bold = 2;//设置单元格中字体为粗体
//合并单元格
newTable.Cell(1, 1).Merge(newTable.Cell(1, 3));
WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
WordApp.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;//水平居中
//填充表格内容
newTable.Cell(2, 1).Range.Text = "产品基本信息";
newTable.Cell(2, 1).Range.Font.Color = Microsoft.Office.Interop.Word.WdColor.wdColorDarkBlue;//设置单元格内字体颜色
//合并单元格
newTable.Cell(2, 1).Merge(newTable.Cell(2, 3));
WordApp.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter;
//填充表格内容
newTable.Cell(3, 1).Range.Text = "品牌名称:";
newTable.Cell(3, 2).Range.Text = "BrandName";
//纵向合并单元格
newTable.Cell(3, 3).Select();//选中一行
object moveUnit = Microsoft.Office.Interop.Word.WdUnits.wdLine;
object moveCount = 5;
object moveExtend = Microsoft.Office.Interop.Word.WdMovementType.wdExtend;
WordApp.Selection.MoveDown(ref moveUnit, ref moveCount, ref moveExtend);
WordApp.Selection.Cells.Merge();
//插入图片
string FileName = @"c:\picture.jpg";//图片所在路径
object LinkToFile = false;
object SaveWithDocument = true;
object Anchor = WordDoc.Application.Selection.Range;
WordDoc.Application.ActiveDocument.InlineShapes.AddPicture(FileName, ref LinkToFile, ref SaveWithDocument, ref Anchor);
WordDoc.Application.ActiveDocument.InlineShapes[1].Width = 100f;//图片宽度
WordDoc.Application.ActiveDocument.InlineShapes[1].Height = 100f;//图片高度
//将图片设置为四周环绕型
Microsoft.Office.Interop.Word.Shape s = WordDoc.Application.ActiveDocument.InlineShapes[1].ConvertToShape();
s.WrapFormat.Type = Microsoft.Office.Interop.Word.WdWrapType.wdWrapSquare;
newTable.Cell(12, 1).Range.Text = "产品特殊属性";
newTable.Cell(12, 1).Merge(newTable.Cell(12, 3));
//在表格中增加行
WordDoc.Content.Tables[1].Rows.Add(ref Nothing);
WordDoc.Paragraphs.Last.Range.Text = "文档创建时间:" + DateTime.Now.ToString();//“落款”
WordDoc.Paragraphs.Last.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight;
//文件保存
WordDoc.SaveAs(ref filename, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing);
WordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
WordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
message=name+"文档生成成功,以保存到C:CNSI下";
}
catch
{
message = "文件导出异常!";
}
return message;
}
}
}
#24
23#chenmengdx
(萧萧) 谢谢你啊!
有纵向合并单元格后,那下面的代码还能用吗?
我的会提示:
System.Runtime.InteropServices.COMException (0x800A1767): 无法访问此集合中单独的行,因为表格有纵向合并的单元格。
(萧萧) 谢谢你啊!
//纵向合并单元格
newTable.Cell(3, 3).Select();//选中一行
object moveUnit = Microsoft.Office.Interop.Word.WdUnits.wdLine;
object moveCount = 5;
object moveExtend = Microsoft.Office.Interop.Word.WdMovementType.wdExtend;
WordApp.Selection.MoveDown(ref moveUnit, ref moveCount, ref moveExtend);
WordApp.Selection.Cells.Merge();
有纵向合并单元格后,那下面的代码还能用吗?
//在表格中增加行
WordDoc.Content.Tables[1].Rows.Add(ref Nothing);
我的会提示:
System.Runtime.InteropServices.COMException (0x800A1767): 无法访问此集合中单独的行,因为表格有纵向合并的单元格。
#25
#26
楼主你在WORD 里面写东西好麻烦,而且想要的表格效果都实现不了。我现在做的项目就是这样,所以我用的是在HTML也上把表格都写好了,想要什么效果都行,之后把html也转换成word格式。这样可以方便做什么效果的都行。楼主想这样实现吗?想的话我把代码给你发过去,给我分就好了。
#27
#26 lifeng_2009
我的WORD表格行数是不固定的,根据数据库中的数据量而定,所以就需要增加行哦~
我的WORD表格行数是不固定的,根据数据库中的数据量而定,所以就需要增加行哦~
#28
你可以用Repeater 绑定数据库啊 动态生成表格,有几条数据生成几个TD 就行了。
#29
#26 lifeng_2009
我的文档还需要合并行,Repeater不能合并行吧?好难( ⊙ o ⊙ )啊!
我的文档还需要合并行,Repeater不能合并行吧?好难( ⊙ o ⊙ )啊!
#30
看你要显示什么信息了
------------------------------------------------------------
| | B | |
| A -----------------
| | C | |
|----------------------
这个abc是类似与ID NAME AGE
之后就是下一条信息了 如 1 小李 23 ,2 小王 22
还是abc后面还有d啊
你把多条信息的都列出来
------------------------------------------------------------
| | B | |
| A -----------------
| | C | |
|----------------------
这个abc是类似与ID NAME AGE
之后就是下一条信息了 如 1 小李 23 ,2 小王 22
还是abc后面还有d啊
你把多条信息的都列出来
#31
谢谢各位了,我的问题解决了,用的拆分单元格,哈哈,知道了吧?
#32
楼主散点分吧。没有分了!
#33
doc.Tables[3].Cell(18, 2).Split(ref rownum, ref colnum);
然后对相应的单元格加内容
#34
#33 谢谢啊
你的是拆分单元格的代码
我就是这样实现在有合并行的表格中插入行的
你的是拆分单元格的代码
我就是这样实现在有合并行的表格中插入行的
#35
结帖~
#36
Oh,my god 还丢了一位……
#37
借用了,好东西
#38
标记一下