读取word表格,生成新word(顶者有分)

mm6268 2008-11-24 09:52:17
小弟在做一个C/S的项目,遇到此问题,很棘手...
客户有一个word的模板,其中有很多表格我要在程序中读取其中一个为模板,然后根据数据库的内容行数给这个模板添加数据,生成新的WORD文件,生成文件这一步小弟可以完成了,但是一行一条数据,要对应起来,小弟思路是先根据DataTable的行数来增加原表格的行数,然后把数据依次插入进去,实现此功能
还请各位达人给个具体的解决方案,如果有参考示例,小弟不胜感激..
...全文
147 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
beniao277 2008-11-25
  • 打赏
  • 举报
回复
学习了。
Ki1381 2008-11-24
  • 打赏
  • 举报
回复
DataTable是由DataRow构成的。

foreach (DataRow dr in YourDataTable.Rows)
{
// 以下代码我都不会,哈哈
// 生成一行word的表格行
// 把数据对应填充进去
}
huaye1984 2008-11-24
  • 打赏
  • 举报
回复
顶下,想知道最好的解决办法!
caorenlong 2008-11-24
  • 打赏
  • 举报
回复
帮顶
mm6268 2008-11-24
  • 打赏
  • 举报
回复
行数不是对应的,但是这个表格的第一行是列名,数据库中无法提取呀,只能从原来的读取,列是对应的,我原来的思路是替换,现在发现不适合,只能动态创建...
zjybushiren88888 2008-11-24
  • 打赏
  • 举报
回复
顶,接分
wangping_li 2008-11-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 mm6268 的帖子:]
小弟在做一个C/S的项目,遇到此问题,很棘手...
客户有一个word的模板,其中有很多表格我要在程序中读取其中一个为模板,然后根据数据库的内容行数给这个模板添加数据,生成新的WORD文件,生成文件这一步小弟可以完成了,但是一行一条数据,要对应起来,小弟思路是先根据DataTable的行数来增加原表格的行数,然后把数据依次插入进去,实现此功能
还请各位达人给个具体的解决方案,如果有参考示例,小弟不胜感激..
[/Quote]
首先你这个模板的表格能保证和数据库数据的行数是对应的?
如果不是的话你就根据数据库的内容来动态创建表格,数据有多少行,表格就是多少行.这样数据自然就对应起来了
qinhl99 2008-11-24
  • 打赏
  • 举报
回复
up
cpio 2008-11-24
  • 打赏
  • 举报
回复
我觉得涉及表格还是用Excel做好,不知道用户是不是必须用Word?
zjs1109 2008-11-24
  • 打赏
  • 举报
回复
yangmt204 2008-11-24
  • 打赏
  • 举报
回复
up!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
polopolozz 2008-11-24
  • 打赏
  • 举报
回复
帮顶,好像有二次开发的控件能直接实现
wangping_li 2008-11-24
  • 打赏
  • 举报
回复

try
{
Object Nothing = System.Reflection.Missing.Value;
Directory.CreateDirectory("C:/CNSI"); //创建文件所在目录
string name = "CNSI_"+ ".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);
Microsoft.Office.Interop.Word.Table newTable = WordDoc.Tables.Add(WordApp.Selection.Range, 12, 3, ref Nothing, ref Nothing);
newTable.Cell(1, 1).Range.Text = "产品详细信息表";
newTable.Cell(1, 2).Range.Text = "产品表";
newTable.Cell(1, 3).Range.Text = "产品特殊属性";
WordDoc.Content.Tables[1].Rows.Add(ref Nothing);
WordDoc.Content.Tables[1].Rows.Add(ref Nothing);
object myNothing = System.Reflection.Missing.Value;
object myFileName = filename;
object myWordFormatDocument = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocument;
object myLockd = false;
object myPassword = "";
object myAddto = true;
try
{

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);

}
catch
{
throw new Exception("导出word文档失败!");
}



}
catch
{
MessageBox.Show("导出word文档失败!");
}


以上代码测试过了,生成成功的
wangping_li 2008-11-24
  • 打赏
  • 举报
回复
string name = "CNSI_" + DateTime.Now.ToString() + ".doc";
你把名称改下,这样文件名称是无效的
改成:
object filename = "C://CNSI//" + name;
mm6268 2008-11-24
  • 打赏
  • 举报
回复
....
pciak 2008-11-24
  • 打赏
  • 举报
回复
帮顶
happychou 2008-11-24
  • 打赏
  • 举报
回复
帮顶了
luyuans86 2008-11-24
  • 打赏
  • 举报
回复
顶。。。。。使用word的确新颖,大家帮顶呀,

会做的请献出高招,让大伙学习学习
mm6268 2008-11-24
  • 打赏
  • 举报
回复
谢谢顶帖的兄弟姐妹们,小弟坚持,不够补分....
yistudio 2008-11-24
  • 打赏
  • 举报
回复
顶一下
加载更多回复(3)

110,531

社区成员

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

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

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