excel列名问题

hwl2009 2009-12-28 09:24:35
preRange = excel.excelApp.get_Range("A" + 3,((char)('A' + 34)).ToString()
+ (((RowCount).ToString()));

我想从A列开始,然后到34列之后划个范围,可是'A'+34和excel的列名对应不起来,这个该怎么弄?
...全文
219 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
特别 2009-12-28
  • 打赏
  • 举报
回复

/// <summary>
/// 获取EXCEL中的列号
/// </summary>
/// <param name="index">列顺序号,1、2、3……</param>
/// <returns>A、B、C……ZZ</returns>
private string ColumnName( int index )
{
string value = string.Empty;

int left = (index-1) / 26;
int right = index % 26;

if ( left > 0 )
{
value = ( (char)( 64 + left ) ).ToString();
}

if ( right == 0 )
{
value += "Z";
}
else
{
value += ( (char)( 64 + right ) ).ToString();
}

return value;
}
hwl2009 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sdfkfkd 的回复:]
不是A+34对不起来的问题
你"A" + 3就跑不起来吧
要知道EXCEL的列是A-Z,第27列开始就是AA、AB、AC....
你直接加有啥有
[/Quote]
对,就那些AA什么的,怎么用A列加个东西就得到那个列名
hwl2009 2009-12-28
  • 打赏
  • 举报
回复
不好意思
我写错了
"A"代表A列吧,'A'+1代表B列,我想得到34列之后的列名,‘A’+34,这个好像不行
T_T_zz 2009-12-28
  • 打赏
  • 举报
回复
补充下,你的A1应该是A列第一行的意思。Excel中是A~Z,AA~AZ这样排序的,后面跟的数字应该是第几行。如果对列操作的话要做下列操作。
int x = (Len / 26);//取列的十位
if (x > 0)
{
s = Convert.ToString(getIToA(asciinum + x - 1));
}
x = (Len % 26);//取列的个位
if (x > 0)
{
s += Convert.ToString(getIToA(asciinum + x));
}
T_T_zz 2009-12-28
  • 打赏
  • 举报
回复
3和34 要用引号引起来。"A"+"3" "A"+"34"。
特别 2009-12-28
  • 打赏
  • 举报
回复
不是A+34对不起来的问题
你"A" + 3就跑不起来吧
要知道EXCEL的列是A-Z,第27列开始就是AA、AB、AC....
你直接加有啥有

110,538

社区成员

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

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

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