当前位置: 首页 > news >正文

Userexcel 单元格中序号,但是通过openxml获取的不是序号是数字?

OpenXML 是一种用于读写 Office 文件(包括 Excel)的开放式标准。如果你通过 OpenXML 获取到的 Excel 单元格中的内容是数字而不是序号,可能是因为 Excel 中的序号实际上是一种显示格式,而不是存储的数值。OpenXML 读取的是实际存储的数值,而不会执行 Excel 中的格式化。

如果你想获取 Excel 单元格中的显示值,可以考虑使用 Cell.CellValue 属性。以下是一个示例代码,演示如何通过 OpenXML 获取 Excel 单元格的显示值:

using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open("YourExcelFile.xlsx", false))
{WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;WorksheetPart worksheetPart = workbookPart.WorksheetParts.First(); // 假设只有一个工作表// 选择要读取的单元格Cell cell = worksheetPart.Worksheet.Descendants<Cell>().FirstOrDefault(c => c.CellReference == "A1");if (cell != null){string displayValue = cell.InnerText;// 如果单元格具有共享字符串,则进一步处理if (cell.DataType != null && cell.DataType.Value == CellValues.SharedString){int sharedStringIndex = int.Parse(displayValue);SharedStringTablePart sharedStringTablePart = workbookPart.SharedStringTablePart;string sharedStringValue = sharedStringTablePart.SharedStringTable.Elements<SharedStringItem>().ElementAt(sharedStringIndex).InnerText;Console.WriteLine("Display Value (Shared String): " + sharedStringValue);}else{Console.WriteLine("Display Value (Number): " + displayValue);}}
}

在上述代码中,我们通过 cell.InnerText 获取了单元格的显示值。如果这是一个共享字符串,我们还从共享字符串表中获取了实际的字符串值。这样,你可以确保获取到的是 Excel 中显示的值而不是存储的数值。

相关文章:

  • C++入门(一)— 使用VScode开发简介
  • 【C++】STL反向迭代器模拟实现,迭代器适配器,迭代器类型简单介绍
  • 【竞技宝】LOL:Able小炮连续起跳收割战场 OMG2-0轻取TT
  • 微服务系统设计:横向扩展和纵向扩展的对比
  • C#基础题
  • Java中使用StopWatch实现代码块耗时统计/计时某段代码执行
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • C语言指针学习 之 指针是什么
  • python验证服务器或容器端口是否可以用
  • Linux(ubuntu) -- 安装后调配
  • C语言实现12种排序算法
  • kubernetes内外网通信-集群外节点访问 pod ip
  • k8s二进制及负载均衡集群部署详解
  • grafana安装DevOpsProdigy KubeGraf 1.5.2
  • 协作办公开源神器:ONLYOFFICE
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 2017-09-12 前端日报
  • create-react-app项目添加less配置
  • Electron入门介绍
  • Facebook AccountKit 接入的坑点
  • Fastjson的基本使用方法大全
  • go语言学习初探(一)
  • Java 23种设计模式 之单例模式 7种实现方式
  • Java超时控制的实现
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • PAT A1092
  • php面试题 汇集2
  • React中的“虫洞”——Context
  • vuex 笔记整理
  • Vue学习第二天
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 如何设计一个微型分布式架构?
  • 使用putty远程连接linux
  • 思否第一天
  • 再次简单明了总结flex布局,一看就懂...
  • hi-nginx-1.3.4编译安装
  • ​第20课 在Android Native开发中加入新的C++类
  • #git 撤消对文件的更改
  • #pragma once与条件编译
  • #每天一道面试题# 什么是MySQL的回表查询
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • $.proxy和$.extend
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (四)库存超卖案例实战——优化redis分布式锁
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)为C# Windows服务添加安装程序
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • ./和../以及/和~之间的区别
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .Net 8.0 新的变化
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .net core使用ef 6
  • .NET 设计一套高性能的弱事件机制
  • .NET面试题(二)
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题