相关疑难解决方法(0)

将列号转换为字母的功能?

有没有人有一个Excel VBA函数可以从一个数字返回列字母?

例如,输入100应该返回CV.

excel vba excel-udf

134
推荐指数
11
解决办法
39万
查看次数

在C#中生成Excel列字母的最快功能

什么是最快的c#函数,它接受并返回包含一个或多个字母的字符串,以便在Excel函数中使用?例如,1返回"A",26返回"Z",27返回"AA"等.

这被称为成千上万次,并且需要25%的时间来生成具有许多公式的大型电子表格.

public string Letter(int intCol) {

    int intFirstLetter = ((intCol) / 676) + 64;
    int intSecondLetter = ((intCol % 676) / 26) + 64;
    int intThirdLetter = (intCol % 26) + 65;

    char FirstLetter = (intFirstLetter > 64) ? (char)intFirstLetter : ' ';
    char SecondLetter = (intSecondLetter > 64) ? (char)intSecondLetter : ' ';
    char ThirdLetter = (char)intThirdLetter;

    return string.Concat(FirstLetter, SecondLetter, ThirdLetter).Trim();
}
Run Code Online (Sandbox Code Playgroud)

c# excel performance

35
推荐指数
5
解决办法
3万
查看次数

如何找到与给定整数对应的Excel列名?

您如何确定Excel中第n列的列名(例如"AQ"或"BH")?

编辑:一种语言无关的算法,以确定这是这里的主要目标.

language-agnostic algorithm excel

30
推荐指数
5
解决办法
5万
查看次数

如何创建一个将数字转换为双向Hexavigesimal的函数?

也许我在数学方面还不够好,但是我在将数字转换为纯字母的Bijective Hexavigesimal方面遇到了问题,就像Microsoft Excel/OpenOffice Calc一样.

这是我的代码的一个版本,但没有给我我需要的输出:


    var toHexvg = function(a){
     var x='';
     var let="_abcdefghijklmnopqrstuvwxyz";
     var len=let.length;
     var b=a;
     var cnt=0;
     var y = Array();
     do{
      a=(a-(a%len))/len;
      cnt++;
     }while(a!=0)
     a=b;
     var vnt=0;
     do{
      b+=Math.pow((len),vnt)*Math.floor(a/Math.pow((len),vnt+1));
      vnt++;
     }while(vnt!=cnt)
     var c=b;
     do{
      y.unshift( c%len );
      c=(c-(c%len))/len;
     }while(c!=0)
     for(var i in y)x+=let[y[i]];
     return x;
    }

我努力的最佳结果是:a b c d ... y z ba bb bc- 虽然不是上面的实际代码.预期的输出是a b c ... y z aa ab ac ... zz aaa aab aac ... zzzzz …

javascript excel hexavigesimal

7
推荐指数
1
解决办法
2864
查看次数

如何在C#中获取连续字符?

我有一个

List<String> MyList=new List<string>();
Run Code Online (Sandbox Code Playgroud)

我需要MyListn值填充列表.

如果n的值为2,则列表MyList将包含

"A","B"
Run Code Online (Sandbox Code Playgroud)

如果10那么

"A","B","C"....."J"
Run Code Online (Sandbox Code Playgroud)

如果30那么

"A"....."Z","AA","AB",AC","AD"
Run Code Online (Sandbox Code Playgroud)

如果1000那么

"A",....."Z","AA","AB"......"AZ","BA","BB"......."BZ"........"YZ","AAA",AAB".....
and so on
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做.

请帮助我使用任何方法使用LINQ或执行此操作 LAMBDA Expression

c# linq lambda .net-3.5

6
推荐指数
1
解决办法
4021
查看次数

增加字母表

我正在尝试创建一个函数,它将在传递索引时为我提供字母位置.它会像excel显示它的列一样.A ... Z,AA,AB ....我写了下面的函数来得到Z的结果.它看起来像

static string GetColumnName(int index)
{
    const int alphabetsCount = 26;
    if (index <= alphabetsCount)
    {
        int code = (index - 1) + (int)'A';
        return char.ConvertFromUtf32(code);
    }
    return string.Empty;
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,直到'Z'.如果我通过1则返回'A',如果我通过2则返回'B',依此类推.但是,当我将27传递给这个函数时,我无法弄清楚如何获得AA.我想我需要一个递归方法来找到它.

对这个问题的任何输入都会很棒!

编辑

这是Tordek建议的.但他的代码将失败,如52,78等数字.为此添加了解决方法,这是最终的工作代码.

static string GetColumnName(int index)
{
    const int alphabetsCount = 26;

    if (index > alphabetsCount)
    {
        int mod = index % alphabetsCount;
        int columnIndex = index / alphabetsCount;

        // if mod is 0 (clearly divisible) we reached end of one combination. Something like AZ …
Run Code Online (Sandbox Code Playgroud)

c# alphabet

5
推荐指数
1
解决办法
3769
查看次数

OpenXML 库保存 excel 文件

我有以下代码,它没有将值保存到单元格和文件中。它显示了cell.cellvalue字段中的价值,但它没有将其写入excel。我不知道如何保存文件。我使用OpenXml-SDK并将datatable值写入每个cell/row创建的电子表格文档。

 using (SpreadsheetDocument ssd=SpreadsheetDocument.Open(Server.MapPath(@"\ExcelPackageTemplate.xlsx"),true))
        {
            WorkbookPart wbPart = ssd.WorkbookPart;
            WorksheetPart worksheetPart = wbPart.WorksheetParts.First();

            SheetData sheetdata = worksheetPart.Worksheet.GetFirstChild<SheetData>();
            string[] headerColumns = new string[] { dt.Columns[0].ColumnName, dt.Columns[1].ColumnName,dt.Columns[2].ColumnName };
            DocumentFormat.OpenXml.Spreadsheet.Row r = new DocumentFormat.OpenXml.Spreadsheet.Row();
            int RowIndexer = 1;
            //int colInd=0;
            r.RowIndex = (UInt32)RowIndexer;

            string test = ColumnName(RowIndexer);

            foreach (DataColumn dc in dt.Columns)
            {

                DocumentFormat.OpenXml.Spreadsheet.Cell cell = new DocumentFormat.OpenXml.Spreadsheet.Cell();
                cell.CellReference = test+RowIndexer;
                cell.DataType = CellValues.InlineString;
                cell.InlineString = new InlineString(new Text(dc.ColumnName.ToString()));
                DocumentFormat.OpenXml.Spreadsheet.CellValue value = new DocumentFormat.OpenXml.Spreadsheet.CellValue();

                r.AppendChild(cell); …
Run Code Online (Sandbox Code Playgroud)

c# openxml openxml-sdk

1
推荐指数
1
解决办法
2万
查看次数