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

Bru*_*ill 1 .net c# excel ms-office closedxml

我正在寻找一个允许使用C#读取Excel文档的库,但我需要能够读取单元格格式以及电子表格中的数据。我发现这个有用的问题列出了许多用于读取Excel文档的替代方法,但是此处提供的许多解决方案仅允许读取电子表格的内容,而不允许读取单元格属性(例如,字体,背景色等)。但是,对于我的特定问题,我需要阅读一个包含很多单元格格式的文档,并且我需要能够读取此格式信息。

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

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

更新:

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

http://closedxml.codeplex.com/wikipage?title=查找%20和%20extracting%20the%20data&referringTitle =文档

并能够毫无问题地读取Excel文档的内容。我仅使用此代码中的Categories示例,但已将两个categoryname单元格格式化为具有背景色。现在,我要使用ClosedXml进行的操作是确定:

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

  • 如果已定义,则获取Fill的颜色(十六进制值即可)

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

// 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();
}
Run Code Online (Sandbox Code Playgroud)

但是代码

categoryName.Style.Fill.BackgroundColor.Color.ToHex()
Run Code Online (Sandbox Code Playgroud)

总是抛出期望“词典中不存在给定的键”。,即使对于确实定义了背景色的单元格也是如此。任何人都有任何想法如何与ClosedXml一起使用吗?

Ana*_*uza 5

OpenXml及其包装器- ClosedXml为您提供许多有用的功能。