Word中根据表头动态增加表格行,然后往表格里写数据,以及在Word中添加书签,然后替换书签值
来源:互联网 发布:淘宝开店哪里找货源 编辑:程序博客网 时间:2024/05/16 00:25
在Word中,对于已经有了固定的表头的表格,但是不知道表格具体需要多少行时,我们可以根据需要动态的增加,以及单元格 的拆分,合并等操作。以下 是具体的例子代码(对于没有表头的表格,参照于我的另一篇博客):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Word;
using System.Windows;
using C_STP_WPF_Building.entity;
namespace C_STP_WPF_Building
{
public class Report
{
private _Application wordApp = null; //代表当前应用程序
public _Document wordDoc = null;//代表当前的word文档
private Table table = null;//代表word文档中的表格
private Range allRange;
public _Application Application
{
get
{
return wordApp;
}
set
{
wordApp = value;
}
}
public _Document Document
{
get
{
return wordDoc;
}
set
{
wordDoc = value;
}
}
//通过模板打开文档
public void CreateNewDocument(string filePath)
{
try
{
killWinWordProcess();//杀死word进程
wordApp = new Word.Application();
wordApp.DisplayAlerts = WdAlertLevel.wdAlertsNone;
wordApp.Visible = false;
object missing = System.Reflection.Missing.Value;
object templateName = filePath;
wordDoc = wordApp.Documents.Open(ref templateName, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing);
table = wordDoc.Tables[15];//文档中的表格,如果是第一个表格Tables[1].
allRange = wordDoc.Range(missing, missing);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(e.StackTrace);
}
}
//该类表示向Word表格中的第n个表格中添加num行,然后向数组中的数据写入表格中
//n为表格序号
//num为要插入几行数据
//rp为插入数据的数组
//包括插入表格,表格合并,表格拆分,插入数据
public void AddRow10(int n, int num, ResultParameter[] rp, Carproportion[] cararray, Variabless[] variablessarray)
{
object miss = System.Reflection.Missing.Value;
Word.Table table = wordDoc.Content.Tables[n];//获取第几个表格
int row = variablessarray.Length * cararray.Length;
for (int i = 0; i < row; i++)
{
table.Rows.Add(ref miss);//插入表格行,插入一行
}
int resultcount = -1;
for (int j = 2; j < row + 2; j = j + 2 * cararray.Length)
{
int i = j;
int nu = j / (2 * cararray.Length);
int carcount = -1;
table.Cell(j, 1).Select();//纵向合并单元格 序号部分
object moveUnit1 = Word.WdUnits.wdLine;
object moveCount1 = 2 * cararray.Length - 1;
object moveExtend1 = Word.WdMovementType.wdExtend;
wordApp.Selection.MoveDown(ref moveUnit1, ref moveCount1, ref moveExtend1);
wordApp.Selection.Cells.Merge();
//下面序号赋值
table.Cell(j, 1).Range.Text = (nu + 1).ToString();
table.Cell(j, 2).Select(); //纵向合并单元格 隧道名称部分
object moveUnit2 = Word.WdUnits.wdLine;
object moveCount2 = 2 * cararray.Length - 1;
object moveExtend2 = Word.WdMovementType.wdExtend;
wordApp.Selection.MoveDown(ref moveUnit2, ref moveCount2, ref moveExtend2);
wordApp.Selection.Cells.Merge();
//下面隧道名称赋值
table.Cell(j, 2).Range.Text = variablessarray[nu * 2].uname.ToString();
for (int z = 0; z < cararray.Length; z++)
{
try
{
table.Cell(i, 3).Select();
}
catch { }
object moveUnit3 = Word.WdUnits.wdLine;
object moveCount3 = 1;
object moveExtend3 = Word.WdMovementType.wdExtend;
wordApp.Selection.MoveDown(ref moveUnit3, ref moveCount3, ref moveExtend3);
wordApp.Selection.Cells.Merge();
table.Cell(i, 3).Split(1, 2); //拆分单元格
table.Cell(i, 4).Split(2, 1);
carcount++;
table.Cell(i, 3).Range.Text = cararray[carcount].targetyear.ToString();
table.Cell(i, 4).Range.Text = "左幅";
table.Cell(i + 1, 4).Range.Text = "右幅";
//下面赋值
resultcount++;
if (rp[resultcount].vt != 80)
{
table.Cell(i, 5).Range.Text = "-";
resultcount--;
}
else
{
table.Cell(i, 5).Range.Text = rp[resultcount].qvi.ToString();
}
resultcount++;
if (rp[resultcount].vt != 70)
{
table.Cell(i, 6).Range.Text = "-";
resultcount--;
}
else
{
table.Cell(i, 6).Range.Text = rp[resultcount].qvi.ToString();
}
resultcount++;
if (rp[resultcount].vt != 60)
{
table.Cell(i, 7).Range.Text = "-";
resultcount--;
}
else
{
table.Cell(i, 7).Range.Text = rp[resultcount].qvi.ToString();
}
resultcount++;
if (rp[resultcount].vt != 50)
{
table.Cell(i, 8).Range.Text = "-";
resultcount--;
}
else
{
table.Cell(i, 8).Range.Text = rp[resultcount].qvi.ToString();
}
resultcount++;
if (rp[resultcount].vt != 40)
{
table.Cell(i, 9).Range.Text = "-";
resultcount--;
}
else
{
table.Cell(i, 9).Range.Text = rp[resultcount].qvi.ToString();
}
resultcount++;
if (rp[resultcount].vt != 30)
{
table.Cell(i, 10).Range.Text = "-";
resultcount--;
}
else
{
table.Cell(i, 10).Range.Text = rp[resultcount].qvi.ToString();
}
resultcount++;
if (rp[resultcount].vt != 20)
{
table.Cell(i, 11).Range.Text = "-";
resultcount--;
}
else
{
table.Cell(i, 11).Range.Text = rp[resultcount].qvi.ToString();
}
resultcount++;
if (rp[resultcount].vt != 10)
{
table.Cell(i, 12).Range.Text = "-";
resultcount--;
}
else
{
table.Cell(i, 12).Range.Text = rp[resultcount].qvi.ToString();
}
//下一列
resultcount++;
if (rp[resultcount].vt != 80)
{
table.Cell(i + 1, 5).Range.Text = "-";
resultcount--;
}
else
{
table.Cell(i + 1, 5).Range.Text = rp[resultcount].qvi.ToString();
}
resultcount++;
if (rp[resultcount].vt != 70)
{
table.Cell(i + 1, 6).Range.Text = "-";
resultcount--;
}
else
{
table.Cell(i + 1, 6).Range.Text = rp[resultcount].qvi.ToString();
}
resultcount++;
if (rp[resultcount].vt != 60)
{
table.Cell(i + 1, 7).Range.Text = "-";
resultcount--;
}
else
{
table.Cell(i + 1, 7).Range.Text = rp[resultcount].qvi.ToString();
}
resultcount++;
if (rp[resultcount].vt != 50)
{
table.Cell(i + 1, 8).Range.Text = "-";
resultcount--;
}
else
{
table.Cell(i + 1, 8).Range.Text = rp[resultcount].qvi.ToString();
}
resultcount++;
if (rp[resultcount].vt != 40)
{
table.Cell(i + 1, 9).Range.Text = "-";
resultcount--;
}
else
{
table.Cell(i + 1, 9).Range.Text = rp[resultcount].qvi.ToString();
}
resultcount++;
if (rp[resultcount].vt != 30)
{
table.Cell(i + 1, 10).Range.Text = "-";
resultcount--;
}
else
{
table.Cell(i + 1, 10).Range.Text = rp[resultcount].qvi.ToString();
}
resultcount++;
if (rp[resultcount].vt != 20)
{
table.Cell(i + 1, 11).Range.Text = "-";
resultcount--;
}
else
{
table.Cell(i + 1, 11).Range.Text = rp[resultcount].qvi.ToString();
}
resultcount++;
if (rp[resultcount].vt != 10)
{
table.Cell(i + 1, 12).Range.Text = "-";
resultcount--;
}
else
{
table.Cell(i + 1, 12).Range.Text = rp[resultcount].qvi.ToString();
}
i = i + 2;
}
}
}
//在Word中定义好书签的名称,然后用以下代码实现替换书签处
public void InsertNum(double a,double b,double c,double d,double e,double f,double g,double h)
{
object oStart1 = "fan_speed1";//word中的书签名
object oStart2 = "free_number";//word中的书签名
object oStart3 = "r_fan_speed";//word中的书签名
object oStart4 = "l_fan_speed";//word中的书签名
object oStart5 = "Ar";//word中的书签名
object oStart6 = "vc";//word中的书签名
object oStart7 = "r_Vn";//word中的书签名
object oStart8 = "l_Vn";//word中的书签名
Range range1 = wordDoc.Bookmarks.get_Item(ref oStart1).Range;//表格插入位置
Range range2 = wordDoc.Bookmarks.get_Item(ref oStart2).Range;//表格插入位置
Range range3 = wordDoc.Bookmarks.get_Item(ref oStart3).Range;//表格插入位置
Range range4 = wordDoc.Bookmarks.get_Item(ref oStart4).Range;//表格插入位置
Range range5 = wordDoc.Bookmarks.get_Item(ref oStart5).Range;//表格插入位置
Range range6 = wordDoc.Bookmarks.get_Item(ref oStart6).Range;//表格插入位置
Range range7 = wordDoc.Bookmarks.get_Item(ref oStart7).Range;//表格插入位置
Range range8 = wordDoc.Bookmarks.get_Item(ref oStart8).Range;//表格插入位置
range1.Text = Convert.ToString(a);//往书签处写文字
range2.Text = Convert.ToString(b);//往书签处写文字
range3.Text = Convert.ToString(c);//往书签处写文字
range4.Text = Convert.ToString(d);//往书签处写文字
range5.Text = Convert.ToString(e);//往书签处写文字
range6.Text = Convert.ToString(f);//往书签处写文字
range7.Text = Convert.ToString(g);//往书签处写文字
range8.Text = Convert.ToString(h);//往书签处写文字
}
- Word中根据表头动态增加表格行,然后往表格里写数据,以及在Word中添加书签,然后替换书签值
- C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表
- 在word中制作书签
- C# 如何在Word文档中添加,替换和删除书签
- VBScript生成Word,并添加表格及书签
- js 动态添加Word书签
- c#调用Aspose.Word组件操作word 插入文字/图片/表格 书签替换套打
- 在数据库服务端,添加一个表格,然后在MFC中对数据库表格的数据做插入、删除和修改
- 利用.net替换Word的内容(从数据库中取数据来替换word里面的书签)
- 利用.net替换Word的内容(从数据库中取数据来替换word里面的书签)
- word中表格快速添加行
- 根据文本自动在Word文件中生成表格
- 在java中利用书签修改word文本的方法
- 在Office Word中利用书签管理参考文献和引用
- Spire.Doc 教程:在word文档中创建书签
- C#操作word,签入书签,图表,表格
- js动态添加word表格
- 在word里操作表格
- CSS3 motion-path 路径动画
- Parajumpers Dame parajumpers long bear
- 怎样写一个解释器
- 仿微信拍照和图片选择开源库(适配android7.0)multi-image-selector
- ARP嗅探和抓包学习
- Word中根据表头动态增加表格行,然后往表格里写数据,以及在Word中添加书签,然后替换书签值
- ExtJs关闭面板时清空面板中的内容
- 微信硬件蓝牙开发各种坑不完全开发指南
- 使用原生javascript生成html内容
- nutch2.3.1爬取marker流程
- 解决PLSQL报错"动态执行表不可访问,本会话的自动统计被禁止"
- SS-libv安装填坑
- 大数据分类和架构简介
- 一天一条Linux指令-mkdir