当前位置: 首页 > 科技观察

NPOI操作ExcelPart3Excel浅析

时间:2023-03-14 22:06:47 科技观察

通过前面两篇文章的基础学习,我们对NPOI有了一定的了解。接下来我们就开始进入实战,分析如下格式的Excel(以下仅举几个例子),并保存。首先我们来分析一下存储。分析这样的Excel,我们需要将指标【橙底蓝底】(作为指标入库),科目【棕底黄底】(入X轴),数据【奶白底白底】](存储为Y轴)数据单独存储。第一张图得到的指标无疑应该是第三行第二列到最后一列的数据,而第二张图得到的指标应该是非金融企业部门使用,非金融企业部门-source、金融机构部门使用、金融机构部门来源等。如果我们要得到这样的数据,首先需要填充合并行的单元格,然后合并合并列的数据。我们可以用一个二维数组来实现。由于每个Excel的格式不一样,索引数据的行数和列数也不一样,所以我们只能通过背景色来区分数据,将数据的三部分分开,放到三个二维的arrays,然后将其解析到数据库中。由于Excel的背景颜色不同,所以不能硬编码。通过观察我们可以发现,每个Excel从指标行到数据行都有一个背景色。这样,我们就可以区分出来了,相信这里聪明的你已经知道怎么做了,下面开始实现吧1.获取Excel的扩展名,创建一个工作簿。如果是xls,就创建一个HSSFWorkbook工作簿。如果是xlxs,就创建一个XSSFWorkbook工作簿。publicstaticvoidReadFromExcelFile(stringfilePath){IWorkbookwk=null;stringextension=System.IO.Path.GetExtension(filePath);//GetExtension获取Excel的扩展名try{FileStreamfs=File.OpenRead(filePath);if(extension.Equals(".xls")){wk=newHSSFWorkbook(fs);//将xls文件中的数据写入wk}else{wk=newXSSFWorkbook(fs);//将xlsx文件中的数据写入wk}fs.Close();sheet=wk.GetSheetAt(0);//读取当前表数据20GetIndexRow();//获取[指标、主题、数据]的行列数ReadData();//读取数据并保存inthearraySaveData();//解析数组数据并存入数据库}catch(Exceptione){Console.WriteLine(e.Message);//只在Debug模式下输出}2.哪一行获取指标fromfor(inti=0;i///判断规范单元格是否为合并单元格,并输出单元格的维度///cell///celldimension///返回是否为合并单元格Boolean(布尔值)valuepublicstaticboolIsMergeCell(thisICellcell,outDimensiondimension){returncell.Sheet.IsMergeCell(cell.RowIndex,cell.ColumnIndex,outdimension);}https://www.cnblogs.com/zqyw/category/1070314.html本文转载来自微信公众号《CSharp编程大全》,您可以通过以下二维码关注转载文章,请联系CSharp编程大全公众号。