Open XML SDK:尝试填充超过 25 列时出现“不可读内容”错误

2024-05-09

我使用 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 month/year pairs take over
cellNo = (uint)0;
foreach (string h in headers2)
{
    cell = InsertCellInWorksheet(headerCells[cellNo++], 2, worksheetPart);
    cell.CellValue = new CellValue(h);
    cell.DataType = new EnumValue<CellValues>(CellValues.String);
}

string[] monthYears = 
    GetData_month_years(currentReportingPeriod - 1);
for (int j = 0; j < monthYears.Count(); j++)
{
    cell = InsertCellInWorksheet(headerCells[cellNo++], 2, worksheetPart);
    cell.CellValue = new CellValue(monthYears[j].ToString());
    cell.DataType = new EnumValue<CellValues>(CellValues.String);
}

唯一填充的单元格是 A 和 AA 到 AH。

我认为我达到了某种限制是正确的吗?如果是这样,重置它的方法是什么?

我看过几篇关于不可读内容错误的帖子,并且浏览了文档,但到目前为止我找不到任何适用的内容。

帮助将不胜感激!

Thanks


接受的答案绝对是正确的,但这是一种解决方法。仅当您按顺序插入单元格时它才有效。

如果您使用的是 InsertCellInWorksheet 方法MSDN http://msdn.microsoft.com/en-us/library/office/cc861607(v=office.15).aspx,在比较不同长度的单元格引用(例如“Z”和“AA”)时,单元格引用比较存在错误。

// Cells must be in sequential order according to CellReference. 
// Determine where to insert the new cell.
Cell refCell = null;
foreach (Cell cell in row.Elements<Cell>())
{
    if (string.Compare(cell.CellReference.Value, cellReference, true) > 0)
    {
        refCell = cell;
        break;
    }
}

您可能想要更改字符串。比较一下:

if (ColumnNameParse(cell.CellReference.Value) > ColumnNameParse(cellReference))
{
    refCell = cell;
    break;
}

使用 ColumnNameParse 方法取自这个答案 https://stackoverflow.com/a/8739121/2712478:

public int ColumnNameParse(string cellReference)
{
    var value = cellReference.TrimEnd("1234567890".ToCharArray());

    // assumes value.Length is [1,3]
    // assumes value is uppercase
    var digits = value.PadLeft(3).Select(x => "ABCDEFGHIJKLMNOPQRSTUVWXYZ".IndexOf(x));
    return digits.Aggregate(0, (current, index) => (current * 26) + (index + 1));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Open XML SDK:尝试填充超过 25 列时出现“不可读内容”错误 的相关文章

随机推荐

  • 未找到类型:'(架构,http://www.w3.org/2001/XMLSchema,)

    我正在使用 suds client 来提供肥皂 wsdl 服务 当我尝试为肥皂服务设置肥皂水客户端时 我收到 类型未找到 错误 我到处寻找 有许多未解答的问题具有相同的错误 我将链接添加为问题1 https stackoverflow co
  • 这个 Java 语法是什么意思? [复制]

    这个问题在这里已经有答案了 可能的重复 java中的是什么意思 https stackoverflow com questions 12649572 what does the type in java mean 在下面的代码中 Itera
  • 使用 Sentinels 升级 Redis 的最佳实践?

    我有 3 个 Redis 节点 由 3 个哨兵监视 我进行了搜索 文档似乎不清楚如何最好地升级此类配置 我目前使用的是 3 0 6 版本 我想升级到最新的 5 0 5 我对这方面的程序有几个疑问 升级两个大版本可以吗 我在我们的暂存环境中执
  • 如何在 mysql 或 JDBC 的表中自动插入外键引用?

    我正在使用MySQL 我的问题是如何自动将新添加的行插入外键表中 一个例子可以澄清我的问题 我有两个表 员工 和 薪水 CREATE TABLE Employee emp id int NOT NULL AUTO INCREMENT nam
  • 在没有窗口的情况下从 C# 运行命令行并获取输出[重复]

    这个问题在这里已经有答案了 我正在尝试从 C 运行命令行脚本 我希望它在没有 shell 的情况下运行并将输出放入我的字符串输出中 它不喜欢 p StartInfo 行 我究竟做错了什么 我没有运行像 p StartInfo FileNam
  • 暂停和恢复过渡

    我在用setInterval 因此转换会在一定时间间隔后发生 是否可以使用 setInterval 暂停和恢复工作 任何正确方向的建议 指示都会非常有帮助 这个问题是在 D3 v3 是最新版本时发布的 5年后D3 v5有了一些新方法 比如s
  • 我可以更改 Chrome 中 HTML 颜色输入的默认输入格式吗?

    在 Chrome 83 中 单击
  • 允许两个或多个流浪虚拟机在自己的网络上进行通信

    我想创建多个可以直接相互通信而无需使用公共 IP 的服务器 他们仍然需要互联网访问 但网络外部不需要连接到他们 创建一个盒子通常可以工作 但是当我添加其他服务器时 网络会失败 苹果系统 10 8 5虚拟盒 4 3 12GuestOS Ubu
  • OpenGL 与 Eclipse CDT + MinGW + GLEW + GLFW:未定义的参考

    Edit 与此同时 我已经弄清楚了这一点 并在下面写了详细的答案 我刚刚尝试在 Win7 上从 Express 版本的 MSVC 10 切换到 Eclipse CDT 在配置时遇到了以下简单 OpenGL 代码的问题 在 Visual St
  • GCM 通知的自定义 UI

    In GCM Docs http developer android com google gcm gcm html其给定 它不提供任何内置用户界面或其他处理 消息数据 GCM 只是将收到的原始消息数据直接传递给 Android 应用程序
  • 将异常错误转换为字符串

    我想处理异常中的错误消息 但似乎无法将其转换为字符串 我已经阅读了操作系统库手册页 但有些东西不适合我 打印错误有效 try os open test txt os O RDONLY except OSError as err print
  • Prolog 过滤自定义目标失败的所有元素的列表

    我正在尝试写一个谓词filter List PredName Result 过滤一个List目标的所有要素PredName失败并随后返回Result列表 谓词PredName 1应该在调用过程时定义filter 3例如可以是 test N
  • 将 GSL(或其他库)静态链接到共享库

    注意 尽管下面提到了 Python 但我的问题很可能根本与 Python 无关 如果我没有记错的话 我提到的 模块 相当于一个 C 库 至少对于我的问题而言是这样 在 Debian 上 我尝试使用 C 创建一个 Python 模块 而该模块
  • 如何使用 PHP 创建动态页面标题

    大家好 我想知道是否有人可以帮助解决这个 PHP 问题 是否可以使用 H2 标记中的文本并使用它来动态填充页面标题 我还希望能够使用相同的技术将 H2 文本添加到元描述中 有人可以帮忙吗 如果您的 h2 文本是动态创建的 那么网页的其他部分
  • 如何根据 Kubernetes / Docker 事件发送警报?

    是否可以根据 Kubernetes 集群内发生的事件以某种方式发送警报 到电子邮件 slack 特别是 如果 Pod 意外重新启动或 Pod 无法启动 那么获取警报将非常有用 同样 了解 Pod 的 CPU 使用率是否超过特定阈值并获取警报
  • 在 r 中的 unique() 函数中使用管道不起作用

    我在使用管道运算符 gt 和 unique 函数时遇到一些麻烦 df data frame a c 1 2 3 1 b a unique df a no problem here df gt unique a not working her
  • Javascript:自动点击按钮?

    我正在学习如何编写 chrome 扩展 而且我对 javascript 还很陌生 这是一些 html div class button data a class button1 whiteColor href http link1 com
  • 在 Visual Studio 2017 中变量模板中的除法返回零

    这大概是一个视觉工作室2017 questions tagged visual studio 2017与此问题相关的错误 Visual Studio 中 Lambda 的模板变量错误 https stackoverflow com q 49
  • p:remoteCommand 无法在异步模式下工作

    如果有人可以在这里给我帮助 我将不胜感激 我在页面上有一个选项卡式布局 通过单击选项卡 p commandLink 我想初始化该选项卡的适当数据并更新显示内容的区域 由于我希望初始化能够延迟发生 当呈现选项卡内容时 因此我使用 Primef
  • Open XML SDK:尝试填充超过 25 列时出现“不可读内容”错误

    我使用 C 中的 Open XML SDK 创建了一个电子表格 并成功填充了两个工作表 当尝试填充第三个时 我得到了 内容不可读 打开已完成的文档时出错 并且当我尝试在第三个文档中连续填充超过 25 个单元格时 似乎会发生此错误 我使用的代