如何使用开放的XML SDK基于C#中每行的列读取xlsx?

2024-04-29

我正在尝试使用 open xml sdk 读取一些 .xlsx 文件,但我真的很难找到任何好的示例。

我想要做的是读取整个 XLSX 文件并循环所有行并从我指定的列中提取单元格值/单元格文本。

就像下面这样:

GetCellText(rowId, ColumnLetter)

这可能吗?


Helpers:

private static string GetColumnName(string cellReference)
{
    if (ColumnNameRegex.IsMatch(cellReference))
        return ColumnNameRegex.Match(cellReference).Value;

    throw new ArgumentOutOfRangeException(cellReference);
}

private static readonly Regex ColumnNameRegex = new Regex("[A-Za-z]+");

Code:

using (var document = SpreadsheetDocument.Open(stream, true))
        {
            var sheets = document.WorkbookPart.Workbook.Descendants<Sheet>();

            foreach (Sheet sheet in sheets)
            {

                WorksheetPart worksheetPart = (WorksheetPart)document.WorkbookPart.GetPartById(sheet.Id);
                Worksheet worksheet = worksheetPart.Worksheet;
                var rows = worksheet.GetFirstChild<SheetData>().Elements<Row>();
                foreach (var row in rows)
                {
                    var cells = row.Elements<Cell>();
                    foreach (var cell in cells)
                    {
                        if(GetColumnName(cell.CellReference) == "A")
                        {
                            var str = cell.CellValue.Text;
                            // do whatewer you want
                        }
                    }
                }
            }

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

如何使用开放的XML SDK基于C#中每行的列读取xlsx? 的相关文章

随机推荐

  • 使用 Pyinstaller 将 Django 项目转换为 .exe - 缺少模块、ModuleNotFoundError

    我正在使用 Pyinstaller 将 Django 项目转换为 exe 文件 我希望能够只需单击一个图标并在浏览器中打开该项目 这是我的文件夹结构 proj pycache proj pycache init py manage py D
  • 是否应该将jqGrid的addJSONData用法替换为setGridParam()和trigger('reloadGrid')的用法?

    我最近写了一个问题的答案 jqGrid 在更新表 自定义更新时显示默认 正在加载 消息 https stackoverflow com questions 2614643 jqgrid display default loading mes
  • Android 导航栏覆盖

    对于我的应用程序 我必须在 Android 屏幕底部的导航栏顶部绘制一个位图 我很好奇 WindowManager LayoutParams TYPE SYSTEM OVERLAY 是否可以用于覆盖导航栏 Use the WindowMan
  • 如何避免动态图中的“堆指针意大利面条”?

    一般问题 假设您正在编写一个由图组成的系统 以及可以根据相邻节点的配置激活的图重写规则 也就是说 您有一个在运行时不可预测地增长 收缩的动态图 如果你天真地使用malloc 新节点将被分配在内存中的随机位置 经过足够的时间 你的堆将变成一个
  • Lombok 插件与 2018.1 Intellij Idea 不兼容

    现在我看到 Intellij Idea 更新窗口的概念是 发现插件与新版本不兼容 Lombok 插件 有没有办法解决这个问题 或者我应该等到 lombok 插件团队解决兼容性问题 以下是适合我的解决方案 更新intellij idea 我使
  • 使用 Facebook 登录 Angularfire 未收到扩展权限

    在升级到 Angularfire 0 9 之前我已经完美地工作了 我想从 Facebook 请求用户的电子邮件地址 Facebook 已允许我向我的用户索取此信息 我正在使用下面的代码登录 Facebook 一切都完美地接受它不要求用户的电
  • AngularJS 条件 ng-disabled 不会重新启用

    给定一个有条件禁用的文本输入字段 使用ng disabled truthy scope variable AngularJS 禁用该字段第一次范围变量被伪造 但不会在后续更改中启用它 结果 该字段保持禁用状态 我只能假设出了问题 但控制台日
  • 由于使用 Bulma 和 Buefy (nuxt-buefy) 时 PostCSS 出现问题,无法构建 Nuxt

    使用以下配置 一切正常npm run dev 但是当我们这样做时npm run build 有一个错误 assets scss main scss 中的错误 node modules nuxt postcss8 node modules c
  • 解释暴力算法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何从下到上显示垂直进度条

    我需要帮助 当 window onload 时 我怎样才能制作进度条 它必须从下到上填充 在这段代码中它的工作原理相反 function move var elem document getElementById myBar var hei
  • 这个结构 (int) { 1 } 是如何调用的?

    构造如何 int 1 用C调用 猜测是 匿名常量 但这在谷歌上没有显示出任何帮助 作为旁注 您可以使用此构造来告诉 ioctl 您想要使用值为 1 的变量 ioctl int 1 它被称为 复合文字 http drdobbs com 184
  • R Plotly 为条形图设置自定义颜色

    我有一个plotly我的 Shiny 应用程序中的条形图 我想在生成的条形图中设置每列的特定颜色 Here s some reproducible data df data frame Month c Jan Feb Mar Apr May
  • Obj-C 中的错误:预期标识符或“(”

    我正在尝试制作一个带有按钮 得分计数器和计时器的简单应用程序 但出现了一些错误 import
  • 将文本传递给可能包含单引号的 JavaScript 函数

    我有一个动态创建的链接 如下所示 a href Edit a 使用编辑功能 然后获取传入的值并将其放入雅虎富文本编辑器中 除非传递的文本中有单引号 否则这种方法效果很好 明显的问题是链接看起来像这样 a href Edit a 对我能做什么
  • dispatch_time 和dispatch_walltime 之间有什么区别?在什么情况下最好使用其中之一?

    我知道dispatch time是根据设备时钟的时间 如果设备进入睡眠状态 时钟也会睡眠 另一方面dipatch walltime是根据挂钟的时间 它永远不会睡觉 我的问题是 在不同情况下使用其中一种或另一种 在性能方面或其他方面有什么区别
  • 产生独特的价值

    我想创建一个C程序生成 0 到 999999 之间的数字 请记住生成的数字不应包含任何重复的数字 例如 123 是一个可接受的值 但不是 121 as the 1 被重复 我已经找到了其他程序代码来检查整数是否有重复的数字 检查整数是否有重
  • 如何调用 less.js 函数

    我什至不太确定如何问这个问题 LESS CSS框架包含几个操作颜色的函数 我想知道如何自己调用这些函数来修改颜色 问题是这些函数位于另一个函数内部并定义如下 function tree tree functions darken funct
  • 将多个堆栈导航器中常见的所有屏幕放在哪里? - 反应导航 v5

    以下是我的应用程序导航器的层次结构 appNavigator 底部选项卡导航器 feed 堆栈导航器 后详细信息屏幕 页面详细信息屏幕 个人资料详情屏幕 其他屏幕 通知 堆栈导航器 个人资料详情屏幕 页面详细信息屏幕 发布详情屏幕 其他屏幕
  • 根据列标题将数据从一个工作簿转移到另一个工作簿

    我下面的代码将列值从一个特定工作簿 Activeworkbook 列 O AH 和 I 转置到另一个工作簿 loader file xls 列 A B C 它非常适合我的需求 Sub PullTrackerInfo Pull info fr
  • 如何使用开放的XML SDK基于C#中每行的列读取xlsx?

    我正在尝试使用 open xml sdk 读取一些 xlsx 文件 但我真的很难找到任何好的示例 我想要做的是读取整个 XLSX 文件并循环所有行并从我指定的列中提取单元格值 单元格文本 就像下面这样 GetCellText rowId C