C# 使用NPOI从table中导出数据到Excel,合并同一列中相同的单元格

for(inti=0;i<dt.Rows.Count;i++){IRowrow=Sheet.CreateRow(i+1);for(intj=0;j<dt.Columns.... for (int i = 0; i < dt.Rows.Count; i++){ IRow row = Sheet.CreateRow(i+1); for (int j = 0; j < dt.Columns.Count; j++) { row.CreateCell(j).SetCellValue(dt.Rows[i][j].ToString()); if ((j==1||j==2) && i >0) {if (string.Compare(dt.Rows[i][j].ToString(), dt.Rows[i - 1][j].ToString()) == 0) {CellRangeAddress region = new CellRangeAddress(i,i+1,j,j); Sheet.AddMergedRegion(region);}}}}
现在用的是上面的代码来判断单元格值是否相同,相同则合并(第1列和第2列),超过两个相同的就会有问题,前两个可以正常合并,第3个开始单元格合并了,但内容有问题,如下图

请帮忙看看要怎么改,或者另外有什么方法
展开
 我来答
v雪地里的猫
推荐于2017-12-16 · TA获得超过864个赞
知道小有建树答主
回答量:401
采纳率:100%
帮助的人:242万
展开全部
n行合并,应该是一起合并的,并不是两行两行合并。
要实现,算法上要想一下。

确定每组的开始行号跟结束行号,由这两个值来合并
int start=…;//合并开始行号
int end=…;//合并结束行号
if(start!=end)//该组开始行号跟结束行号相同时候,该组只有一行,不用合并。不等才合并
{
CellRangeAddress region = new CellRangeAddress(start,end,j,j);
Sheet.AddMergedRegion(region);
}
上面开始行号跟结束行号,就需要在循环中判断,并设置。
这只是思路,供参考。
更多追问追答
追问
但是目前就是没法确定start和end
追答
int start = 0;//记录同组开始行号
int end = 0;//记录同组结束行号
string temp = "";
DataTable dt;
for (int i = 0; i < dt.Rows.Count; i++)
{
    IRow row = Sheet.CreateRow(i + 1);
    for (int j = 0; j < dt.Columns.Count; j++)
    {
        string cellText = dt.Rows[i][j].ToString();
        row.CreateCell(j).SetCellValue(cellText);
        if (j == 2)
        {
            if (cellText == temp)//上下行相等,记录要合并的最后一行
            {
                end = i;
            }
            else//上下行不等,记录
            {
                if (start != end)
                {
                    CellRangeAddress region = new CellRangeAddress(start, end, 1, 1);
                    Sheet.AddMergedRegion(region);
                    CellRangeAddress region2 = new CellRangeAddress(start, end, 2, 2);
                    Sheet.AddMergedRegion(region2);
                }
                start = i;
                end = i;
                temp = cellText;
            }
        }
                    
    }
}

花了点时间帮你写了下代码,看行不行。可以的话要点赞啊~

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式