通过打开 xml sdk linq 查询获取带有行和列位置的 Excel 单元格值

2024-01-11

任何人都知道如何使用开放 XML SDK 2.0 获取 Excel 单元格值,知道行和列的位置,例如(A2),通过 Linq?


因此,Excel 直接存储单元格值,或者如果它是字符串,则存储在称为 SharedString 表的通用数据结构中。

在下面的示例中,我们首先使用 linq 获取特定地址处的单元格,然后将其传递给另一个函数以获取单元格的值。

另请注意,您必须在每个阶段添加空检查以确定行/列是否存在

using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

namespace TestOpenXmlSDK
{
    class Program
    {
        static void Main(string[] args)
        {
            string pathSource = @"D:\sample.xlsx";
            using (FileStream fsSource = new FileStream(pathSource, FileMode.Open, FileAccess.Read))
            {
                byte[] bytes = new byte[fsSource.Length];
                fsSource.Read(bytes, 0, (int)fsSource.Length);
                using (MemoryStream mem = new MemoryStream())
                {
                    mem.Write(bytes, 0, (int)bytes.Length);
                    using (SpreadsheetDocument excelDocument = SpreadsheetDocument.Open(mem, true))
                    {
                        var wbPart = excelDocument.WorkbookPart;
                        var wsPart = wbPart.WorksheetParts.First();
                        var sheetData = wsPart.Worksheet.GetFirstChild<SheetData>();

                        var cellValue = GetCellValue(GetCell(sheetData, "B2"), wbPart);
                    }
                }
            }
        }

        public static Cell GetCell(SheetData sheetData, string cellAddress)
        {
            uint rowIndex = uint.Parse(Regex.Match(cellAddress, @"[0-9]+").Value);
            return sheetData.Descendants<Row>().FirstOrDefault(p => p.RowIndex == rowIndex).Descendants<Cell>().FirstOrDefault(p => p.CellReference == cellAddress);
        }

        public static string GetCellValue(Cell cell, WorkbookPart wbPart)
        {
            string value = cell.InnerText;
            if (cell.DataType != null)
            {
                switch (cell.DataType.Value)
                {
                    case CellValues.SharedString:
                        var stringTable = wbPart.GetPartsOfType<SharedStringTablePart>().FirstOrDefault();
                        if (stringTable != null)
                        {
                            value = stringTable.SharedStringTable.ElementAt(int.Parse(value)).InnerText;
                        }
                        break;

                    case CellValues.Boolean:
                        switch (value)
                        {
                            case "0":
                                value = "FALSE";
                                break;
                            default:
                                value = "TRUE";
                                break;
                        }
                        break;
                }
            }
            return value;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过打开 xml sdk linq 查询获取带有行和列位置的 Excel 单元格值 的相关文章

  • -ffast-math 可以安全地用于典型项目吗?

    在回答我建议的问题时 ffast math 有评论指出这是危险的 我个人的感觉是 在科学计算之外 是可以的 我还假设严肃的金融应用程序使用定点而不是浮点 当然 如果你想在你的项目中使用它 最终的答案是在你的项目上测试它 看看它有多大影响 但
  • C++ STL 映射,std::pair 作为键

    这就是我通过地图定义的方式 std map
  • 地图类容器的专用功能

    我想要专门为矢量和地图之类的容器设计一个函数模板 对于向量 我可以像下面那样做 但我不知道如何才能有一个专门版本的函数 该函数仅用于像地图这样的容器 include
  • MVVM:来自 FileOpenPicker 的图像绑定源

    我将 OnActivated 添加到 app xaml cs 中 它可以正常工作 protected async override void OnActivated IActivatedEventArgs args var continua
  • 二叉树和快速排序?

    我有一个家庭作业 内容如下 别生气 担心 我是not请你帮我做作业 编写一个程序 通过使用二分查找的快速排序方法对一组数字进行排序 树 推荐的实现是使用递归算法 这是什么意思 到目前为止 这是我的解释 正如我在下面解释的那样 我认为两者都有
  • 如何在 Google Mock 中使用可选参数来模拟方法?

    如何使用可选参数模拟方法谷歌模拟 例如 class A public void set enable bool enabled true class MockA public A MOCK METHOD1 set enable void b
  • 有关shared_ptr的竞态条件示例

    为什么没有竞争条件代码片段 https godbolt org z nEYPYqdqK below include
  • 图片框、双击和单击事件

    我有一个奇怪的问题 我有一个图片框双击事件以及单击事件 问题是即使我双击该控件 也会引发单击事件 如果我禁用单击事件 则双击事件正在工作 这个问题已经在这里讨论过 https stackoverflow com questions 1830
  • 将两个垂直滚动条相互绑定

    我在控件中有两个 TextBox 并且它们都有两个 VerticalScrollBar 我想在它们之间绑定 VerticalScrollBars 如果一个向上 第二个也会向上等等 如果可以的话我该怎么做 Thanks 不是真正的绑定 但它有
  • 大小为 k 的非连续子序列的最大值的最小值

    在开始之前 我希望这个问题不是重复的 我发现了几个类似的问题 但它们似乎都没有描述完全相同的问题 但如果它是重复的 我会很高兴看到一个解决方案 即使它与我的算法不同 我一直在尝试回答这个问题 https stackoverflow com
  • Qt 多重继承和信号

    由于 QObject 我在 QT 中遇到了有关多重继承的问题 我知道很多人也有同样的问题 但我不知道该如何解决 class NavigatableItem public QObject Q OBJECT signals void desel
  • 为什么 C# 中的命名空间允许循环依赖?

    在 c 中 您可以在文件 a cs 其命名空间为 MyApp A 中拥有一条语句 using MyApp B 而文件 b cs 其名称空间为 MyApp B 已经包含该语句 using MyApp A 如果类似的依赖关系存在于不同的 dll
  • 如何处理文件名中的空格

    我正在尝试迭代本地目录中的文件 foreach string name in Directory GetFileSystemEntries path FileAttrtibutes att File GetAttributes name 文
  • 在 OSX 上检测 Objective C 或 C++ 中的文件夹访问(如 fs_usage 命令)

    我正在 OSX 上开发实时病毒扫描程序 OSX 的命令行命令fs usage可以通过以下方式确定文件夹访问权限 并且只能以 root 用户身份运行 fs usage w f pathname grep Users Documents Use
  • 用 std::generate_n 填充 std::map

    我想填写一个std map using std generate n但无法让它发挥作用 我尝试过的是这样的事情 unsigned number of pairs 5 std map
  • 使用 StartServiceCtrlDispatcher 与 StartService 从 C 语言启动 Windows 服务有什么区别?

    我尝试使用 StartServiceCtrlDispatcher 中所述https msdn microsoft com en us library windows desktop bb540475 v vs 85 aspx https m
  • asio::this_coro::executor 的实现是什么

    在协程函数中 我们可以添加auto ex co await asio this coro executor 获取该协程的执行者 但当我想了解它的定义时 我发现了这个 Awaitable type that returns the execu
  • 在for循环中声明和初始化变量

    可以简单写一下吗 for int i 0 代替 int i for i 0 在 C 或 C 中 并且会变量i只能在循环内部访问 它在 C 中有效 它在 C 的原始版本中是不合法的 但在 C99 中被采用为 C 的一部分 当时一些 C 功能被
  • 将二进制长字符串转换为十六进制 C#

    我正在寻找一种将长二进制字符串转换为十六进制字符串的方法 二进制字符串看起来像这样 0110011010010111001001110101011100110100001101101000011001010110001101101011 我
  • 独立值不会出现在 moxy - jaxb 生成的 xml 中

    我有一个使用 jaxb 的 moxy 实现生成的 xml 文件 但是独立值不会出现在 xml 文档中 Note 我是EclipseLink JAXB MOXy http www eclipse org eclipselink moxy ph

随机推荐

  • PHP ImagickDraw 与概述文本问题

    我正在学习和练习我的 Imagick 技能 我在使用 Imagick 描边绘制轮廓文本时遇到问题 我想实现此图像上可见的效果 流行的互联网模因 这是我到目前为止的代码 draw new ImagickDraw outputImage new
  • .NET 有内置的 EventArgs 吗?

    我正准备为带有单个参数的事件参数创建一个通用的 EventArgs 类 public class EventArg
  • 如何使用mysql子查询减去库存和销售?

    尝试了解有关子查询的更多信息 我正在寻找一种方法来减去和比较两个表 存货 Sales 我的数据记录如下 存货 mysql gt select store id product id sum quantity as inventory fro
  • 无法在 pyspark 数据帧上使用 Sklearn 模型进行预测

    我已成功加载 sklearn 模型 但无法对 pyspark 数据帧进行预测 运行下面给定的代码时 出现下面提到的错误 请帮助我获取在 pyspark 上使用 sklearn 模型进行预测的代码 我也搜索过相关问题 但没有找到解决方案 sc
  • pki与对称加密的性能差异是什么?

    我们希望对我们的项目提出一些严格的安全要求 并且我们需要进行大量高性能的加密 我认为我知道 PKI 比对称加密慢得多且复杂得多 但我找不到数字来支持我的感觉 是的 纯粹的非对称加密比对称密码 如 DES 或 AES 慢得多 这就是实际应用程
  • Mongoid 查询数组字段

    我有一个category现场type Array在蒙古人中 前任 类别 val1 val2 val3 现在我想用 category val1 val2 查询这个模型 以便它返回我的合并 Model where 类别 val1 和 Model
  • 正在像 Smalltalk 一样浏览 Ruby 代码?

    Smalltalk 类层次结构浏览器最接近的等价物是什么 我见过一些解决方法 例如this http www lovettsoftware com blogengine net post 2012 01 27 Ruby Class Hier
  • 上传 100KB+ zip 文件会出现内部服务器错误

    这是我的 HTML 代码 尽管我认为它无关紧要
  • C++ 查找 ofstream 的大小

    我的代码当前执行类似以下操作 ofstream fout fout open file txt fout lt lt blah blah lt lt 100 lt lt lt lt 3 14 get ofstream length here
  • 使用 iPhone 应用程序在 Google+ 中分享图像

    在这里 我正在 IOS 应用程序中使用 Google 集成 我已阅读链接中的指南https developers google com mobile ios share https developers google com mobile
  • Wix - 根据条件安装目录

    在我的 wix 源代码中 我必须在注册表中查找 2 个条目才能获取安装目录
  • 关闭 ServiceStack 日志记录

    ServiceStack 的内部日志记录不是我希望在日志中包含的内容 我们如何禁用内部日志记录 或者至少抑制它 这样它就不会堵塞日志 配置 LogManager 时只需将其设置为 NullLogFactory 的实例 LogManager
  • JPanel 未在 JFrame 中显示 - Java

    Server 是我创建的一个扩展 JFrame 的类 Server serverApp new Server TITLE WIDTH HEIGHT true false 我已经有效地删除了几乎所有其他代码 但问题仍然存在 c getCont
  • 如何使用 WebAPI、WCF、SignalR 和后台任务在 MVC Web 应用程序中配置简单的注入器容器和生活方式

    简单的注入器文档提供了关于如何为 WebRequest Web API WCF 设置容器的很好的示例 但这些示例一次只针对一种技术 生活方式 我们的网络应用程序同时使用了它们中的大部分 我不清楚如何配置容器以适应多种生活方式 假设我有一个带
  • 将 pandas dataframe 的双组打印为二维数组

    我想将带有 2 个分组依据的单值聚合的结果显示到表中 这样 df groupby colA colB size 会产生 B1 B2 B3 B4 A1 s11 s12 s13 A2 s21 s22 s23 A3 s31 s32 s33 A4
  • C++11 lambda 作为数据成员?

    lambda 可以定义为数据成员吗 例如 是否可以使用 lambda 而不是函数对象重写下面的代码示例 struct Foo std function
  • 无法将 List' 隐式转换为 'double'

    不断抛出 我的代码的这一部分出了什么问题 当我想返回单元格时 我收到此错误 无法将类型 System Collections Generic List 隐式转换为 double public double readFileToList st
  • 多重集合的高级类型

    我想写一个Multiset T S Scala 中的类 它有 2 个类型参数 T是元素的类型 而S是集合的底层表示 在这个多重集中 一个实例S T Int 被构造 在每对中 T是元素并且Int是其出现的次数 这在 C 中是可能的 templ
  • Firefox 忽略图像的百分比高度

    我正在为一位教授开发一个网站 但我在 Firefox 中遇到了 CSS 问题 该网站被设计为流动宽度 高度 因此它可以在任何分辨率下填充屏幕 因此我使用了大量的高度和宽度百分比 然而 我遇到了图像问题 http projects media
  • 通过打开 xml sdk linq 查询获取带有行和列位置的 Excel 单元格值

    任何人都知道如何使用开放 XML SDK 2 0 获取 Excel 单元格值 知道行和列的位置 例如 A2 通过 Linq 因此 Excel 直接存储单元格值 或者如果它是字符串 则存储在称为 SharedString 表的通用数据结构中