日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

NPOI 在word中插入 表格 合并单元格

發布時間:2023/12/15 综合教程 24 生活家
生活随笔 收集整理的這篇文章主要介紹了 NPOI 在word中插入 表格 合并单元格 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在使用NPOI操作制作word數據模板時,需要在word中插入表格,包括合并單元格的方式

圖例:

1,沒有合并單元的方式創建表格,這種方式是提前創建好所需要的表格,然后再往里面填數

  

XWPFDocument doc= new XWPFDocument();
//創建表格-提前創建好表格后填數
XWPFTable tableContent = doc.CreateTable(4, 5);//4行5列
tableContent.Width = 1000 * 5;
tableContent.SetColumnWidth(0, 1000);/* 設置列寬 */
tableContent.SetColumnWidth(1, 1500);
tableContent.SetColumnWidth(2, 1500);
tableContent.SetColumnWidth(3, 1000);

tableContent.GetRow(0).GetCell(0).SetParagraph(SetCellText(doc, tableContent, "地點"));
tableContent.GetRow(0).GetCell(1).SetParagraph(SetCellText(doc, tableContent, "日期"));
tableContent.GetRow(0).GetCell(2).SetParagraph(SetCellText(doc, tableContent, "男性"));
tableContent.GetRow(0).GetCell(3).SetParagraph(SetCellText(doc, tableContent, "女性"));
tableContent.GetRow(0).GetCell(4).SetParagraph(SetCellText(doc, tableContent, "合計"));

//測試數據格式
//string[,] siblings = new string[3, 5] { { "航天橋", "-", "0", "0", "0" }, { "馬甸", "-", //"0", "0", "0" }, { "洋橋", "04月16日 - 05月31日", "0", "0", "0" } };
//List<ArrayList> list=Common.PubVars.listTable;
for (int i = 0; i < list.Count;i++)//有3個數組
{ 
   ArrayList ls=list[i];
   for (int j = 0; j < ls.Count;j++)
   {
tableContent.GetRow(i + 1).GetCell(j).SetParagraph(SetCellText(doc, tableContent, ls[j].ToString())); } }

//設置字體樣式

public XWPFParagraph SetCellText(XWPFDocument doc, XWPFTable table, string setText)
{
   //table中的文字格式設置 
   CT_P para = new CT_P();
   XWPFParagraph pCell = new XWPFParagraph(para, table.Body);
   pCell.Alignment = ParagraphAlignment.CENTER;//字體居中 
   pCell.VerticalAlignment = TextAlignment.CENTER;//字體居中 

   XWPFRun r1c1 = pCell.CreateRun();
   r1c1.SetText(setText);
   r1c1.FontSize = 12;
   r1c1.FontFamily = "華文楷體";
   //r1c1.SetTextPosition(20);//設置高度 
   return pCell;
}

2,合并單元格的方式,這種方式需要一行一行的創建并操作合并,填入數據,

//數據樣例
//string[,] siblings = new string[10, 7] { 
//{ "1", "test1", "0", "0", "0","0","0" },
//{ "2", "test2", "0", "0", "0","0", "0" }, 
//{ "3", "test3", "0", "0", "0","0", "0"},
//{ "4", "test4", "0", "0", "0","0", "0"},
//{ "5", "test5", "0", "0", "0","0", "0"},
//{ "6", "test6", "0", "0", "0","0", "0"},
//{ "7", "test7", "0", "0", "0","0", "0"},
//{ "8", "test8", "0", "0", "0","0", "0"},
//{ "9", "test9", "0", "0", "0","0", "0"},
//{ "10","test10", "0", "0", "0","0", "0"}, 
//};
List<ArrayList> listYcTable=new List<ArrayList>();

int rows = list.Count;
int col = 0;
foreach (ArrayList al in list)
{
col = al.Count;//列數
}
//創建表格 
XWPFTable table = doc.CreateTable(1, col);//思路,數據一行一行畫
table.RemoveRow(0);//去掉第一行空白的
table.Width = 1000 * 5;
table.SetColumnWidth(0, 300);/* 設置列寬 */
table.SetColumnWidth(1, 1200);

for (int i = 0; i < col - 3; i++)
{
table.SetColumnWidth(2 + i, 800);/* 設置列寬 */
}
table.SetColumnWidth(col - 1, 700);

CT_Row nr = new CT_Row();
XWPFTableRow mr = new XWPFTableRow(nr, table);//創建行 
table.AddRow(mr);//將行添加到table中 

XWPFTableCell c1 = mr.CreateCell();//創建單元格
CT_Tc ct = c1.GetCTTc();
CT_TcPr cp = ct.AddNewTcPr();

//第1行
cp.AddNewVMerge().val = ST_Merge.restart;//合并行
cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直
ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;
ct.GetPList()[0].AddNewR().AddNewT().Value = "序號";

c1 = mr.CreateCell();//創建單元格
ct = c1.GetCTTc();
cp = ct.AddNewTcPr();

cp.AddNewVMerge().val = ST_Merge.restart;//合并行
cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直
ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;
ct.GetPList()[0].AddNewR().AddNewT().Value = "指標名稱";

c1 = mr.CreateCell();//創建單元格
ct = c1.GetCTTc();
cp = ct.AddNewTcPr();
cp.gridSpan = new CT_DecimalNumber();
cp.gridSpan.val = Convert.ToString(col - 3); //合并列 
cp.AddNewVAlign().val = ST_VerticalJc.center;
ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;//單元格內容居中顯示
ct.GetPList()[0].AddNewR().AddNewT().Value = "年齡段";


c1 = mr.CreateCell();//創建單元格
ct = c1.GetCTTc();
cp = ct.AddNewTcPr();

cp.AddNewVMerge().val = ST_Merge.restart;//合并行
cp.AddNewVAlign().val = ST_VerticalJc.center;//垂直
ct.GetPList()[0].AddNewPPr().AddNewJc().val = ST_Jc.center;
ct.GetPList()[0].AddNewR().AddNewT().Value = "合計";
//=====第一行表頭結束=========


//2行,多行合并類似
nr = new CT_Row();
mr = new XWPFTableRow(nr, table);
table.AddRow(mr);

c1 = mr.CreateCell();//創建單元格
ct = c1.GetCTTc();
cp = ct.AddNewTcPr();
cp.AddNewVMerge().val = ST_Merge.@continue;//合并行 序號

c1 = mr.CreateCell();//創建單元格
ct = c1.GetCTTc();
cp = ct.AddNewTcPr();
cp.AddNewVMerge().val = ST_Merge.@continue;//合并行 指標名稱
//年齡段分組
//["20歲以下","21-30","31-40","41-50","51-60","70歲以上"]
ArrayList alAge = Common.PubVars.ageGroup;//年齡段數組
for (int i = 0; i < alAge.Count; i++)
{
mr.CreateCell().SetText(Convert.ToString(alAge[i]));//年齡段單元格
}
c1 = mr.CreateCell();//創建單元格
ct = c1.GetCTTc();
cp = ct.AddNewTcPr();
cp.AddNewVMerge().val = ST_Merge.@continue;//合并行 合計

//====第二行要合并的
for (int i = 0; i < list.Count; i++)
{
//創建一行
nr = new CT_Row();
mr = new XWPFTableRow(nr, table);
table.AddRow(mr);

for (int j = 0; j < list[i].Count; j++)
{
//每一行創建對應的數據
mr.CreateCell().SetText(list[i][j].ToString());
// table.GetRow(i + 1).GetCell(j).SetParagraph(SetCellText(doc, table, list[i][j].ToString()));
}
} 

合并單元格有跨列合并,和跨行分部,兩個關鍵點:

跨列合并

cp.gridSpan = new CT_DecimalNumber();//實例化數字必須
cp.gridSpan.val = “3”; //合并列 合并3列

跨行合并

cp.AddNewVMerge().val = ST_Merge.restart;//合并行--開始行
cp.AddNewVMerge().val = ST_Merge.@continue;//合并行--到合并行

//合并的單元格--邊創建邊合并

總結

以上是生活随笔為你收集整理的NPOI 在word中插入 表格 合并单元格的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。