Excel.Range r = MyExcel.get_Range("A1", NumToExeclRowStr(columncount) + "1");private string NumTochr(int Num)
{
int n = 64 + Num;
return "" + (Char)n;
}
private string NumToExeclRowStr(int Num)
{
int X, Y;
if (Num < 27)
{
return NumTochr(Num);
}
X = Num / 26;
Y = Num - X * 26;
return NumTochr(X) + NumTochr(Y);
}
这个导出,为什么只能导出60多条列,超过这个列就提示错误,怎么回事
{
int n = 64 + Num;
return "" + (Char)n;
}
private string NumToExeclRowStr(int Num)
{
int X, Y;
if (Num < 27)
{
return NumTochr(Num);
}
X = Num / 26;
Y = Num - X * 26;
return NumTochr(X) + NumTochr(Y);
}
这个导出,为什么只能导出60多条列,超过这个列就提示错误,怎么回事
{
int n = 64 + Num;
return "" + (Char)n;
}
private string NumToExeclRowStr(int Num)
{
int X, Y;
if (Num < 27)
{
return NumTochr(Num);
}
X = Num / 26;
Y = Num - X * 26;
return NumTochr(X) + NumTochr(Y);
}
这段是没有问题的,只要columncount<=256
EXCEL中列序号为1、2、3、4、5……
对应的列号表示为A、B、C……Z、AA、AB、AC……AZ、BA……BZ、CA……CZ、……原来的代码列号算的不正确
当列号应该是AZ、BZ、CZ……的时候,
计算出来的结果是A@、B@、C@……
这点楼主可以加断点看看下面是一个应该算正确的计算列号的代码,只要一个方法就够了
不能计算超过702列,因为超过702列就需要三个字母表示了
private static string NumToExeclRowStr( int Num )
{
string str = string.Empty; {
int left = ( Num - 1 ) / 26;
int right = ( Num ) % 26; str = ( string.Format( "{0}{1}", left == 0 ? "" : "" + (char)( left + 64 ), right == 0 ? "Z" : "" + (char)( right + 64 ) ) );
}
return str;
}
你说NumToExeclRowStr(52)的结果是什么?