相关疑难解决方法(0)

Open XML SDK:尝试填充超过25列时出现"Unreadable content"错误

我在C#中使用Open XML SDK创建了一个电子表格,并成功填充了两个工作表.

当尝试填充第三个时,我在打开完成的文档时出现"不可读的内容"错误,并且当我尝试在第三个行中连续填充超过25个单元格时,它似乎发生.

我使用的代码片段与在文档中其他地方成功运行的代码片段相同:

string[] headers2 = {
    "Reference", "Raised", "Priority", "Affected", "Linked incidents",
    "Points", "SLA", "Stopped", "Target" };
// remaining headers are month/years created on the fly
string[] headerCells = {
    "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
    "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", 
    "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH" };
...
// headers
// once we've finished the presets, the …
Run Code Online (Sandbox Code Playgroud)

c# spreadsheet openxml-sdk

7
推荐指数
2
解决办法
2428
查看次数

如何在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
查看次数

将数字转换为C#中的字母,以便在Microsoft Excel中使用

可能重复:
如何将列号(例如127)转换为excel列(例如AA)

好的,我正在编写一个接受二维数组作为参数的方法.我想将这个2d数组放到Excel工作表上,但我需要计算出最终的单元格位置.我可以像这样轻松地获得高度:

var height = data.GetLength(1); //`data` is the name of my 2d array
Run Code Online (Sandbox Code Playgroud)

这给了我我的Y轴,但是获得我的X轴并不容易.显然我可以得到这样的数字:

var width = data.GetLength(0);
Run Code Online (Sandbox Code Playgroud)

这给了我一个数字,我想转换成一个字母.所以,例如,0是A,1是B,依此类推,直到我们到达26,再次回到A. 我确信有一种简单的方法可以做到这一点,但我有一个完整的心理障碍.

你会怎么做?

谢谢

c# algorithm excel

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

重复像excel列这样的字母?

我想创建一个类似于Microsoft Excel中的列字母的字符串列表.例如,26列之后,接下来的列将成为AA,AB,AC,等.

我已经使用了模运算试过,但我刚刚结束了AA,BB,CC等...

import string

passes_through_alphabet = 0

for num, col in enumerate([_ for _ in range(40)]):
    if num % 26 == 0:
        passes_through_alphabet += 1
    excel_col = string.ascii_uppercase[num%26] * passes_through_alphabet
    print(num, excel_col)

0 A
1 B
2 C
3 D
...
22 W
23 X
24 Y
25 Z
26 AA
27 BB
28 CC
...
Run Code Online (Sandbox Code Playgroud)

python string excel modulus

6
推荐指数
2
解决办法
1210
查看次数

增加字母表

我正在尝试创建一个函数,它将在传递索引时为我提供字母位置.它会像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
查看次数

使用C#在Excel/VSTO中的列号为列号

如何查找列的名称或标题?

例如,如果我在excel中选择第5列意味着我希望结果为"E".如何获取对应于列号的字母或字母.

请帮我解释一下代码

c# vsto excel-2007

5
推荐指数
2
解决办法
4654
查看次数

在C#中循环字母表以输出到Excel的最佳方法是什么?

我有导出到excel的代码,我有一个列数组..

  var colheaders = new string[] {"Name", "Age", "Total", "Date"}
Run Code Online (Sandbox Code Playgroud)

现在我有代码看起来像这样设置标题

            excelExport.SetCell("A", 1, "Name");
            excelExport.SetCell("B", 1, "Age");
            excelExport.SetCell("C", 1, "Total");
            excelExport.SetCell("D", 1, "Date");
Run Code Online (Sandbox Code Playgroud)

问题是,如果我有50列,并且我想在开始时添加一列,我必须更新每个列中的字母"A","B","C"等..

因为我已经有一个字符串标题的数组我想要这样的东西:

  foreach (string colheader in colheaders)
  {
     excelExport.SetCell("A", 1, colheader);
  }
Run Code Online (Sandbox Code Playgroud)

但在这种情况下我需要动态设置字母"A".像这样的东西:

  int i = 0;
  foreach (string colheader in colheaders)
  {
     excelExport.SetCell(GetCol(i), 1, colheader);
     i++;
  }
Run Code Online (Sandbox Code Playgroud)

注意:

此外,在Z之后,我需要去AA,然后是AB,然后是AC等..匹配Excel列,因此逻辑必须超过26列

c# arrays alphabet

5
推荐指数
2
解决办法
1664
查看次数

Python字符函数,哪里是"Z"?

我正在尝试将数字转换为excel列字母.

码:

def num2col(num):
    letters = ''
    while num:
        mod = num % 26
        num = num // 26
        letters += chr(mod + 64)
    return ''.join(reversed(letters))

print num2col(25), num2col(26), num2col(27)    
print num2col(51), num2col(52), num2col(53)
print num2col(77), num2col(78), num2col(79)
Run Code Online (Sandbox Code Playgroud)

期望的输出:

Y Z AA
AY AZ BA
BY BZ CA
Run Code Online (Sandbox Code Playgroud)

实际产量:

Y A@ AA
AY B@ BA
BY C@ CA
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

如何将整数转换为 A1 表示法?

我正在尝试创建一种方法,可以在给定列之后找到下一列。例如:

input: A
output: B
Run Code Online (Sandbox Code Playgroud)

乍一看似乎很简单。我只是打算使用以下方法:

public static char nextLetter(char c) {
    c++;
    return c;
}
Run Code Online (Sandbox Code Playgroud)

当你过去Z列在谷歌表,列Z后,就会出现问题,列名是两个字母,然后是三个,等于是柱后Z谈到AA,后AZBA,后ZZAAA,等我的下一个念头,就是首先要弄清楚索引方面的列位置。所以列AA将是 27、52BA等。

查找列的索引不是我现在面临的问题。我需要弄清楚如何将该索引转换为相应的列名。我打算尝试以下方法,但我意识到它也仅限于 AZ:

public static char getLetter(int index) {
    return (char) (index + 64);
}
Run Code Online (Sandbox Code Playgroud)

在这一点上,我认为需要一种递归方法。但是,我无法弄清楚如何设置它。这是我得到的:

private static void getNotation(int size) {
    int divided = size / 26;
    int remainder = size % 26;

    String notation = "";

    while (divided % 26 > 0) {
        // Here …
Run Code Online (Sandbox Code Playgroud)

java notation google-sheets-api

5
推荐指数
2
解决办法
826
查看次数

C#代码问题:修订号和字母

我正在尝试编写一个带有修订号(int)的函数,并将其转换为修订名称(字符串).该公式应产生类似于此的输出:

Number  Name
1       A
2       B
3       C
...     ...
25      Y
26      Z
27      AA
28      AB
29      AC
...     ...
51      AY
52      AZ
53      BA
54      BB
55      BC
...     ...

这看起来很简单,但我认为它可能涉及递归,我很可怕.有什么建议?

c#

4
推荐指数
2
解决办法
597
查看次数