excel合并单元格 c#-关于C#读取excel合并字符串,遇到的问题,希望大神们能帮忙,我真的没办法了

问题描述

关于C#读取excel合并字符串,遇到的问题,希望大神们能帮忙,我真的没办法了

在C#读取excel合并单元格中,我用的是如下的办法,就是遇到合并单元格,往上,先是同一列,然后cell(row-1,col)去向上寻找合并值,如果也是合并值,且有value,那么就寻找到值了,如果没有,一直到一个不是单元格的,那么结束,再通过cell(row,col-1)向左去寻找合并值,方法同上,代码如下
private string GetCellText(int row,int col,Excel._Worksheet oSheet)
{
string result = "";
bool isFound = false;
int rowEnd = 1;
int colEnd = 1;

        Excel.Range oRng = (Excel.Range)oSheet.Cells[row,col];
        if(oRng.Value2 != null)
        {
            result = oRng.Value2.ToString();
            isFound = true;
        }
        else
        {
            if(!(bool)oRng.MergeCells)    // 如果该单元格无值且不是合并的,则返回 null
            {
                result = null;
                isFound = true;
            }
        }
        if(!isFound)
        {
            // 倒序遍历该列所有行(从倒2行开始),判断是否有合并单元格且有值,如果遇到则已求出,
            // 如果遇到非合并单元格,则行+1(倒回1行),列同样倒序进行
            for( int r = row-1; r >=1 ;r--)
            {
                oRng = (Excel.Range)oSheet.Cells[r,col];
                if((bool)oRng.MergeCells)
                {
                    try
                    {
                        if(oRng.Value2 != null)
                        {
                            result = oRng.Value2.ToString();
                            isFound = true;
                            break;
                        }
                    }
                    catch(Exception)
                    {}
                }
                else
                {
                    rowEnd = r+1;
                    break;
                }
            }
            if(!isFound)
            {
                // 倒序遍历该行所有列,判断是否有合并单元格且有值,如果遇到则已求出,如果遇到非合并单元格,则说明数据非法。。。
                for( int c = col-1; c >=1 ;c--)
                {
                    oRng = (Excel.Range)oSheet.Cells[rowEnd,c];
                    if((bool)oRng.MergeCells)
                    {
                        try
                        {
                            if(oRng.Value2 != null)
                            {
                                result = oRng.Value2.ToString();
                                isFound = true;
                                break;
                            }
                        }
                        catch(Exception)
                        {}
                    }
                    else
                    {
                        colEnd = c+1;
                        break;
                    }
                }
            }
            if(!isFound)
            {
                result = null;
            }
        }

        return result;
    }![图片说明](http://img.ask.csdn.net/upload/201510/10/1444486368_121024.png)

但是这个代码有个bug,比如下图
2中,是个合并单元格,向上没有找到合并值,再向左时,找到的圆圈1中是个合并值,但是1和2根本不是一起的单元格,但是按这个算法却得到了1中的值,怎么解决这个问题,加急,谢谢了,我没分,真的很想找人帮忙我。

解决方案

解决方案二:

解决方案三:

解决方案四:

这个是图片。你们看下1和2 都是合并单元格,向左的时候2就把1给读了,怎么办

解决方案五:

这个是图片。你们看下1和2 都是合并单元格,向左的时候2就把1给读了,怎么办

解决方案六:

用vba录制一个宏照着写

解决方案七:

1.第一步判断( (Excel.Range)excelRange.Cells[5,6]).MergeCells确定是否是合并单元格

  1. 第二步判断( (Excel.Range)excelRange.Cells[5,6]).MergeArea.Row和( (Excel.Range)excelRange.Cells[5,6]).MergeArea.Column判断合并单元格的起始行号和列号
时间: 2024-08-03 19:50:48

excel合并单元格 c#-关于C#读取excel合并字符串,遇到的问题,希望大神们能帮忙,我真的没办法了的相关文章

当判断一个单元格是合并单元格时,怎么读取单元格的值呢

问题描述 当判断一个单元格是合并单元格时,怎么读取单元格的值呢,我知道读取合并单元格的第一个单元格的值,但应该如何判断,如何知道哪个才是这个合并单元格的第一个单元格的值呀!?? 解决方案 解决方案二:我是操作的EXCEL表!要循环一行行的读取数据!解决方案三:没人知道么解决方案四:看来问题太简单了,没人喜回复?解决方案五:固定表格的Excel的话,可以定义在数组当中.变化表格的Excel,关注中........解决方案六:这个问题还没解决,再问个问题!~解决方案七:隐藏的工作表读取时知道怎么不读

Excel中合并单元格的几种方法及合并单元格快捷键

  Excel中合并单元格的几种方法及合并单元格快捷键          如下图所示,希望将A1到E1,这之间所有单元格合并成一个大单元格操作方法如下: 合并单元格方法一:利用格式菜单上的"合并及居中"按钮合并单元格 ①首先,选中A1.B1.C1.D1.E1这些单元格; ②然后单击"格式"工具栏上面的"合并及居中"按钮; 此时,这几个单元格就已经合并成了一个大单元格了,是不是很简单呀. 合并单元格方法二:利用"设置单元格格式"

excel合并单元格在哪设置?exl合并单元格快捷键

  使用office办公软件的朋友们很多不知道excel合并单元格在哪设置,其实不难非常简单,有什么excel合并单元格快捷技巧呢?小编就为大家带来exl合并单元格快捷键. excel合并单元格在哪设置?exl合并单元格快捷键 如图我们可以看到长数据内容写不下一个单元格. 这里我们需要选中所有需要合并的单元格,如图所示合并按钮(根据自己意愿选择) 然后多个单元格就合并成功了. excel合并单元格在哪设置?exl合并单元格快捷键就为大家介绍到这里,更多软件教程欢迎关注第九软件网.

cocos2dx3.x-Cocos3.x 移植到Android平台 xml文件读取出错,搞了两天了,大神们帮帮忙。求

问题描述 Cocos3.x 移植到Android平台 xml文件读取出错,搞了两天了,大神们帮帮忙.求 Cocos3.x 移植到Android平台 xml文件读取出错,搞了两天了,大神们帮帮忙.网上的代码也看完了,不顶用.想要个人来交流. 解决方案 顶起来,大神们,小弟今天是要离不开公司了.拜托了

c#-C#怎样读取含有宏操作的excel的单元格的值

问题描述 C#怎样读取含有宏操作的excel的单元格的值 C#读取excel的时候,如果excel中包含宏,比如输入身份证号码,自动填充性别那一列和出生年月那一列.读取性别的时候会出来一连串的宏字符,怎样能只读取excel显示出来的单元格内容啊.大神们,跪求了...

Excel 2007单元格及内容的合并、拆分

Excel 2007的合并与拆分操作包括对单元格与单元格内容的合并与拆分. 合并单元格或拆分合并的单元格 当您合并两个或多个相邻的水平或垂直单元格时,这些单元格就成为一个跨多列或多行显示的大单元格.其中一个单元格的内容出现在合并的单元格 (合并单元格:由两个或多个选定单元格创建的单个单元格.合并单元格的单元格引用是原始选定区域的左上角单元格.)的中心,如以下示例所示. 可以将合并的单元格重新拆分成多个单元格,但是不能拆分未合并过的单元格.   合并相邻单元格 1.选择两个或更多要合并的相邻单元格

excel如何合并单元格?

  excel如何合并单元格?          excel合并单元格内容的方法一 选中要合并的单元格-鼠标右键--设置单元格格式 在单元格格式设置界面--对齐--文本控制--合并单元格 即可完成Excel合并单元格操作. excel合并单元格内容的方法二 选中要合并的单元格,单击工具栏的合并居中 excel合并单元格快捷键 工具--自定义,调出自定义对话框 右键工具栏的合并居中图标--把样式修改为总是只用文字--关闭自定义界面 此时菜单栏的合并居中的图标变成文字样式:合并及居中(M) 由此我们

excel中怎么合并单元格

  EXCEL中合并单元格在什么地方? 1.单元格的合并:同时选中需要合并的单元格,然后按一下"格式"工具栏上的"合并及居中"按钮即可. 2.撤销单元格的合并:选中合并后的单元格,然后再按一下"格式"工具栏上的"合并及居中"按钮即可. 注意:如果是Excel2000及以前的版本,撤销单元格的合并需要这样操作:选中合并后的单元格,执行"格式→单元格"命令,打开"单元格格式"对话框,切换到&

java-POI如何修改一个Excel的合并单元格的值(合并单元格原来有值的)?

问题描述 POI如何修改一个Excel的合并单元格的值(合并单元格原来有值的)? POI如何修改一个Excel的合并单元格的值(合并单元格原来有值的)? 解决方案 合并单元格的值其实就是左上角那个单元格的值,直接读写它就可以了. 解决方案二: poi excel合并单元格Apache POI如何获取Excel合并单元格的值POI 合并单元格 值填充问题 解决方案三: