求excel某一列对应的字母表示

其实就是把一个十进制数转换成26进制,但是这个26进制数没有0,只有1-26:

两种处理方法:

#include <assert.h>
#include <algorithm>
#include <vector>
using namespace std;
const int radix = 26;
string getCol(int num) {

  string res;
  while (num != 0) {
    res.push_back((num-1)%radix+'A');
    num = (num-1)/radix;
  }
  reverse(res.begin(), res.end());
  return res;
}
int main() {
  string res = getCol(702);
  return 0;
}

第二种处理方法:

#include <assert.h>
#include <algorithm>
#include <vector>
using namespace std;
const int radix = 26;
string getCol(int num) {
  string res;
  int i = 1, j = 0, t = i;
  for (i = 1; i * radix + radix < num; i = radix * i);
  while (i != 0) {
    // 26*26+26   和 直接26
    int remainder = num % i;
    int divide = (remainder == 0 && i != 1) ? (num / i - 1) : (num / i);  // 因为26进制数没有0, 所以余数要借radix个,并使得商-1, 但是如果divisor = 1, 就不用这么做了
    res.push_back(divide + 'A' - 1);
    num = remainder == 0 ? radix : remainder;
    i = i / radix;
  }
  return res;
}
int main() {
  string res = getCol(884);
  return 0;
}

所以,数组下标是从0开始的,没有0真是烦啊。。。。

时间: 2024-12-06 13:27:16

求excel某一列对应的字母表示的相关文章

[LeetCode] Excel Sheet Column Title 求Excel表列名称

Given a positive integer, return its corresponding column title as appear in an Excel sheet. For example: 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB Credits:Special thanks to @ifanchu for adding this problem and creating all test

[原创] [C#] 转换Excel数字列号为字母列号

转换Excel数字列号为字母列号 例如: 0 -> A 26 -> AA private static string GetColumnChar(int col) { var a = col / 26; var b = col % 26; if (a > 0) return GetColumnChar(a - 1) + (char)(b + 65); return ((char)(b + 65)).ToString(); }

Excel 列名和列序号转换

. #region - 由数字转换为Excel中的列字母 - public static int ToIndex(string columnName) { if (!Regex.IsMatch(columnName.ToUpper(), @"[A-Z]+")) { throw new Exception("invalid parameter"); } int index = 0; char[] chars = columnName.ToUpper().ToCharA

下载不含数据EXCEL的固定表头模版(标准EXCEL只含有列头),然后上传EXCEL.显示成功和上传失败的EXCEL连接

<div id="import" runat="server" visible="false"> Step1:<asp:HyperLink ID="HyperLink1" NavigateUrl="~/CommonTemplate/设备清单模版.xlsx" runat="server">下载模版</asp:HyperLink><br />

LeetCode Excel Sheet Column Title (输出excel表的列名称)

题意:给一个数字n,输出excel表的列名称. 思路:其实观察可知道,是个26进制的标记而已.那就模拟一下,每次计算一位时就先左移1位,再进行计算. 1 class Solution { 2 public: 3 string convertToTitle(int n) { 4 string ans=""; 5 while(n) //26进制,但是输出时不同而已,是从1开始,而不是0.每次计算将其先左移1位即可. 6 { 7 ans+=(n-1)%26+'A'; 8 n=(n-1-(n-

WPF-两份excel文档列自动匹配导入工具-技术&amp;分享

WPF-两份excel文档列自动匹配导入工具-技术&分享 A文档中包含两列x,y(x与y对应):B文档包含一列y,需要将A文档的y匹配B文档的y,将A文档的x内容匹配到B文档中,与B文档中的y列对应. using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Windows; using System.Windows.Forms; using Mysoft.Co

C# EXCEL导入 混合列文字为空,找不到可安装的 ISAM的解决办法

C# EXCEL导入 混合列文字为空,找不到可安装的 ISAM的解决办法 使用C#导入 Excel数据到 DataTable,如果连接串中只写 Excel 8.0,则正常的字符列,数值列都没有问题,但对于既有数字也有字符的混合列,则读出为空.  后来从网上查到加入IMEX=1 就可将混合型转换为文本,就是连接串为Excel 8.0;IMEX=1,但这有出现 "找不到可安装的 ISAM".  后来在其两边加上单引号' 就可解决.也就是 'Excel 8.0;IMEX=1'  EXCEL

用NPOI操作EXCEL-锁定列CreateFreezePane()

public void ExportPermissionRoleData(string search, int roleStatus) { var workbook = new HSSFWorkbook(); string random = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(100); string fileName = HttpUtility.UrlEncode("sheet"

hdu1087(求最大上升子列和 )

Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 43287    Accepted Submission(s): 20019 Problem Description Nowadays, a kind of chess game called "Super Jumping!