博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Open xml 操作Excel系列之一-读取Excel
阅读量:6048 次
发布时间:2019-06-20

本文共 3087 字,大约阅读时间需要 10 分钟。

一、 安装Open Xml SDK

从微软网站下载安装SDK.

二、 在项目中添加对DocumentFormat.OpenXml库的引用

三、 编程读取Excel 数据

使用Open Xml 读取Excel的过程中,会遇到许多的Excel概念, 作为一个开发人员,最好能掌握分析这种结构的方法, 实际项目中我利用两种方式分析excel文档的结构, 一种是直接使用winrar 打开.xlsx 文件,查看里面的文件组织及文件内容;另一种更为有用的方法是使用Open XML SDK 2.0 Productivity Tool for Microsoft Office 打开.xlsx文件,查看Dom模型。 不止如此,你还可以通过Reflect Code 反射代码了解一个Excel文件所有元素的Open xml生成方式。

如下步骤为读取过程:

1. 使用SpreadsheetDocument document = SpreadsheetDocument.Open(fileName, false)对象打开文件,第一个参数为文件路径,第二个参数指定读取类型是否可编辑。

2. 第二步读取WorkBookPart对应上图中的Workbook部分

WorkbookPart wbPart = document.WorkbookPart;

 3.接下来可以读取WorkbookPart中的Sheet, 以及里面的数据, 在读取过程中你还可以使用Linq来查询Dom节点。 以下代码用于读取下面Excel截图中的Version(A2)值Item_2.72

  

public class ExcelHelper{        public static string GetCellValue(WorkbookPart wbPart, Cell theCell)        {            string value = theCell.InnerText;            if (theCell.DataType != null)            {                switch (theCell.DataType.Value)                {                    case CellValues.SharedString:                        var stringTable = wbPart.                          GetPartsOfType
().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; }}

 

using (SpreadsheetDocument document = SpreadsheetDocument.Open(fileName, false))            {                      string version = string.Empty;                WorkbookPart wbPart = document.WorkbookPart;               List
sheets = wbPart.Workbook.Descendants
().ToList(); var versionSheet = wbPart.Workbook.Descendants
().FirstOrDefault(c => c.Name == "Version"); WorksheetPart worksheetPart = (WorksheetPart)wbPart.GetPartById(versionSheet.Id); if (versionSheet == null) throw new Exceptions.ValidationException("There must be Version sheet !"); Cell theCell = worksheetPart.Worksheet.Descendants
().Where(c => c.CellReference.Value == "A2").FirstOrDefault(); string type = string.Empty; if (theCell != null) { version = ExcelHelper.GetCellValue(wbPart, theCell); } else { throw new Exceptions.ValidationException("Uploading file does not have version number!"); }}

下一篇,我将

 

 

转载于:https://www.cnblogs.com/Hcsdn/p/3210209.html

你可能感兴趣的文章
cronexpression 详解
查看>>
一周小程序学习 第1天
查看>>
小孩的linux
查看>>
JavaScript History对象
查看>>
在 Windows 下安装 Oracle 11g XE (Express Edition)
查看>>
ListView优化
查看>>
【原创】 PostgreSQL 实现MySQL 的auto_increment 字段
查看>>
vs2015添加vc助手
查看>>
检测点1.1
查看>>
android--------阿里 AndFix 热修复
查看>>
control.add()
查看>>
Sublime text3中配置Github
查看>>
Asp.net,C# 加密解密字符串
查看>>
网页视频播放器插件源码
查看>>
2019-4-23 plan
查看>>
[编解码] 关于base64编码的原理及实现
查看>>
WinDbg配置和使用基础
查看>>
转:Object-Runtime的基本数据类型
查看>>
JMJS系统总结系列----Jquery分页扩展库(五)
查看>>
Excel技巧之——英文大小写转换(转)
查看>>