如何把多个range合并成一个range

theodiact 2009-09-10 10:22:19
如何 把Microsoft.Office.Interop.Excel命名空间下的多个range对象合并成一个对象????
...全文
520 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaoweiting0609 2009-09-11
  • 打赏
  • 举报
回复
楼主很大方,O(∩_∩)O哈哈~
BitCoffee 2009-09-10
  • 打赏
  • 举报
回复

Excel.Range r;
r=ws.get_Range(ws.Cells[1,1],ws.Cells[1,6]); //取得合并的区域
r.MergeCells=true;
linton 2009-09-10
  • 打赏
  • 举报
回复
以下的代码是你需要的,希望对你有所帮助。

        /// <summary>
/// 将指定索引列的数据相同的行合并,对指定WorkSheet操作
/// </summary>
/// <param name="intColumnIndex">要合并的列索引</param>
/// <param name="intBeginRowIndex">合并开始行索引</param>
/// <param name="intRowsCount">要合并的行数</param>
public void MergeRowsForSelectedColumn(int intColumnIndex, int intBeginRowIndex, int intRowsCount)
{
Range objFirstRange = null;
Range objMergeRange = null;
string strMeargeText = "";

try
{
if (exlWorksheet == null || intColumnIndex <= 0 || intBeginRowIndex <= 0 || intRowsCount <= 0)
return;

objFirstRange = (Range)exlWorksheet.Cells[intBeginRowIndex, intColumnIndex];
if (objFirstRange == null)
return;
if (objFirstRange.Value2 != null)
strMeargeText = objFirstRange.Value2.ToString().Trim();

objMergeRange = (Range)exlWorksheet.get_Range(exlWorksheet.Cells[intBeginRowIndex, intColumnIndex],
exlWorksheet.Cells[intBeginRowIndex + intRowsCount, intColumnIndex]);
if (objMergeRange == null)
return;

//先把Range内容清除,合并才不会出错
exlWorksheet.Activate();
objMergeRange.ClearContents();
objMergeRange.MergeCells = true;
objMergeRange.Value2 = strMeargeText;
objMergeRange.HorizontalAlignment = XlHAlign.xlHAlignCenter;
objMergeRange.VerticalAlignment = XlVAlign.xlVAlignCenter;
}
catch (Exception ex)
{
string strErrTip = "合并单元格发生错误,错误信息为:->\r\n" + ex.Message;
}
}

/// <summary>
/// 将指定索引列的数据相同的行合并,对指定WorkSheet操作
/// </summary>
/// <param name="intColumnIndex">要合并的列索引</param>
/// <param name="intBeginRowIndex">合并开始行索引</param>
/// <param name="intRowsCount">要合并的行数</param>
///
public void MergeRowsForSelectedColumn(int intColumnIndex, int intBeginRowIndex, int intEndRowIndex, string strMeargeText)
{
Range objMergeRange = null;

try
{
if (exlWorksheet == null || intColumnIndex <= 0 || intBeginRowIndex <= 0 || intEndRowIndex <= 0)
return;

objMergeRange = (Range)exlWorksheet.get_Range(exlWorksheet.Cells[intBeginRowIndex, intColumnIndex],
exlWorksheet.Cells[intEndRowIndex, intColumnIndex]);
if (objMergeRange == null)
return;

//先把Range内容清除,合并才不会出错
exlWorksheet.Activate();
objMergeRange.ClearContents();
objMergeRange.MergeCells = true;
objMergeRange.Value2 = strMeargeText;
objMergeRange.HorizontalAlignment = XlHAlign.xlHAlignCenter;
objMergeRange.VerticalAlignment = XlVAlign.xlVAlignCenter;
objMergeRange.ShrinkToFit = false;
objMergeRange.WrapText = true;
}
catch (Exception ex)
{
string strErrTip = "合并单元格发生错误,错误信息为:->\r\n" + ex.Message;
}
}

/// <summary>
/// 将指定索引行的数据相同的列合并,对指定WorkSheet操作
/// </summary>
/// <param name="intRowIndex">要合并的行索引</param>
/// <param name="intBeginColIndex">合并开始列索引</param>
/// <param name="intColsCount">要合并的列数</param>
public void MergeRowsForSelectedRow(int intRowIndex, int intBeginColIndex, int intColsCount)
{
Range objFirstRange = null;
Range objMergeRange = null;
string strMeargeText = "";

try
{
if (exlWorksheet == null || intRowIndex <= 0 || intBeginColIndex <= 0 || intColsCount <= 0)
return;

objFirstRange = (Range)exlWorksheet.Cells[intRowIndex, intBeginColIndex];
if (objFirstRange == null)
return;
if (objFirstRange.Value2 != null)
strMeargeText = objFirstRange.Value2.ToString().Trim();

objMergeRange = (Range)exlWorksheet.get_Range(exlWorksheet.Cells[intRowIndex, intBeginColIndex],
exlWorksheet.Cells[intRowIndex, intBeginColIndex + intColsCount]);
if (objMergeRange == null)
return;

//先把Range内容清除,合并才不会出错
exlWorksheet.Activate();
objMergeRange.ClearContents();
objMergeRange.MergeCells = true;
objMergeRange.Value2 = strMeargeText;
objMergeRange.HorizontalAlignment = XlHAlign.xlHAlignCenter;
objMergeRange.VerticalAlignment = XlVAlign.xlVAlignCenter;
}
catch (Exception ex)
{
string strErrTip = "合并单元格发生错误,错误信息为:->\r\n" + ex.Message;
}
}



柳晛 2009-09-10
  • 打赏
  • 举报
回复
.
ncjcz 2009-09-10
  • 打赏
  • 举报
回复
Range("A1:D1").Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With

这是录制的宏,估计C#代码差不多的,关键是.MergeCells = True
theodiact 2009-09-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 bitcoffee 的回复:]
range的Text属性可以相加的.
[/Quote]
要的是两个对象合并,属性相加是没有用的
BitCoffee 2009-09-10
  • 打赏
  • 举报
回复
range的Text属性可以相加的.
[Quote=引用 8 楼 theodiact 的回复:]
呵呵~BitCoffee兄,range能够直接相加吗?
[/Quote]
ximi82878 2009-09-10
  • 打赏
  • 举报
回复
建议你用myxls这个控件,很方便的
theodiact 2009-09-10
  • 打赏
  • 举报
回复
呵呵~BitCoffee兄,range能够直接相加吗?
BitCoffee 2009-09-10
  • 打赏
  • 举报
回复

//这样?
Microsoft.Office.Interop.Excel.Range r1;
Microsoft.Office.Interop.Excel.Range r2;
r1.Text += r2.Text;
zhaoweiting0609 2009-09-10
  • 打赏
  • 举报
回复
不知道
theodiact 2009-09-10
  • 打赏
  • 举报
回复
就是把多个range合成一个range
guojh021 2009-09-10
  • 打赏
  • 举报
回复
不知道的自己录个宏看看就行了。
lwp850210 2009-09-10
  • 打赏
  • 举报
回复
不明白

只知道range里合并单元格 range.Merge(range.MergeCells);
yuanhuiqiao 2009-09-10
  • 打赏
  • 举报
回复
没弄过,帮顶
怫悰 2009-09-10
  • 打赏
  • 举报
回复
冒泡帮顶接分

以前弄过一两下excel相关的,早忘了,帮顶

110,561

社区成员

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

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

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