c# - 在 C# 中读取 Excel 数据和单元格格式

标签 c# .net excel ms-office closedxml

我正在寻找一个允许我使用 C# 读取 Excel 文档的库,但我需要能够读取单元格格式 以及电子表格中的数据。我找到了 this useful question上面列出了很多阅读 Excel 文档的不同选择,但是这里提供的很多解决方案只允许阅读电子表格的内容,而不是单元格属性(例如字体、背景颜色等)。但是,对于我的特定问题,我需要阅读包含大量单元格格式的文档,并且我需要能够阅读此格式信息。

我需要阅读的Excel文档是一个xls文档,所以我现阶段不需要阅读xlsx。我正在寻找一个无需安装 Excel 即可在服务器上使用的库,因此它必须是一个独立的解决方案,最好是开源的。

有没有人有从 xls 文档中读取单元格格式信息的经验,并且可以推荐一个有助于完成此任务的库?

更新:

我正在考虑使用 ClosedXml,因为从我读到的内容来看,它似乎提供了我需要的功能。我正在使用此示例代码:

http://closedxml.codeplex.com/wikipage?title=Finding%20and%20extracting%20the%20data&referringTitle=Documentation

并且能够毫无问题地阅读 Excel 文档的内容。我仅使用了此代码中的类别示例,但已将两个类别名称单元格格式化为具有背景颜色。现在我想用 ClosedXml 做的是确定:

  • 如果在特定单元格上定义了填充背景色

  • 如果已定义,则检索填充的颜色(十六进制值即可)

这是我尝试使用的一些代码:

// Get all categories
while (!categoryRow.Cell(coCategoryId).IsEmpty())
{
    IXLCell categoryName = categoryRow.Cell(coCategoryName);
    try
    {
        categories.Add(categoryName.GetString() + " " + categoryName.Style.Fill.BackgroundColor.Color.ToHex());
    }
    catch
    {
        categories.Add(categoryName.GetString() + " None");
    }
    categoryRow = categoryRow.RowBelow();
}

但是代码

categoryName.Style.Fill.BackgroundColor.Color.ToHex()

总是抛出预期“字典中不存在给定的键。”,即使对于确实定义了背景颜色的单元格也是如此。任何人都知道如何使用 ClosedXml 来实现这一点?

最佳答案

OpenXml及其包装 - ClosedXml给你很多有用的功能。

关于c# - 在 C# 中读取 Excel 数据和单元格格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11188970/

相关文章:

c# - 我应该如何在源代码管理中处理项目中的 secret 值?

c# - 比较字符串相似度

java - 将工作表添加到现有的 Excel 文件中

c# - 从 CLR 存储过程中访问 Sql FILESTREAM

c# - Unity - OnTriggerEnter 子弹跳弹

c# - 不正确的 Lambda 表达式缩进

泛型的 C# 类型检查

c# - 应该多广泛地使用异步/等待模式?

python - 我可以将 Datanitro 集成到可执行文件中吗?

asp.net - Excel VBA查询外部.aspx页面并检索数据