一、 安装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; Listsheets = 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!"); }} |
下一篇,我将