pyqt如何读取本地图片_一日一技C#读取ExcelXlsx文件

     国庆中秋节倒计时开始了,趁着祖国妈妈生日&&家人团聚之前来复习一波C#读取Excel基础操作。本篇主要讲用Epplus读取常规文本表格及读取包含图片的Excel表格。

     1.了解下Epplus

      Epplus是一个使用Open Office XML(Xlsx)文件格式读写xlsx文件的net库。支持功能:

  • 单元格范围

  • 单元格样式(边框,颜色,填充,字体,数字,对齐方式)

  • 图表

  • 图片

  • 形状

  • 评论

  • 桌子

  • 保护

  • 加密

  • 数据透视表

  • 资料验证

  • 条件格式

  • VBA

  • 公式计算

  等等,功能还是很丰富,它在第5版之前是基于LGPL 开源许可,5版之后就换授权了,至于为啥?用的人多了,作者估计靠它的授权费加维护估计也可以发家致富奔小康了(一派胡言听听就好),但是个人学习什么的,非商业目的,非商业组织还是可以用用6970893eeb27da8453a27614a64c636e.png

    2.控制台读取纯文本的简单表格Demo

    准备一个 测试数据.xlsx 文件,内容如下:

655cf9c129ff364d6ffbcf73ca9fb68d.png

   static void Main(string[] args){       string filepath ="测试数据.xlsx";           FileInfo file = new FileInfo(filepath);       ExcelPackage.LicenseContext = LicenseContext.NonCommercial;       using (ExcelPackage package = new ExcelPackage(file))       {         ExcelWorkbook workbook = package.Workbook;         ExcelWorksheet worksheet = workbook.Worksheets.First();         int rows = worksheet.Dimension.End.Row;         int cols = worksheet.Dimension.End.Column;         for (int j = 1; j <=rows; j++)         {           for (int i = 1; i <= cols; i++)           {             Console.Write(worksheet.Cells[j, i].Value.ToString() + "\t");           }           Console.WriteLine("");          }                      }        Console.ReadKey();      }    }

输出结果如下:

d9beb917ba55c015063e922e1a37fda8.png

 3.控制台读取带图片的文字表格Demo

   准备一个 测试数据2.xlsx 文件,内容如下:

ff8070caf213e5bea403bfdd73ff6995.png

  读取表格图片的思路是在 worksheet.Drawings 集合中找到 image保存到本地然后去用程序显示,话不多说,用下面的代码替换上面循环的打印那段代码即可:

  if(i == 5)    {       var excelPicture = worksheet.Drawings.Where(o => o.From.Row                            == (j - 1)).FirstOrDefault() as                             OfficeOpenXml.Drawing.ExcelPicture;       var imagepath = Path.Combine                           (string.Format("tmp/{0}.jpg",                              DateTime.Now.ToFileTime()));       if (excelPicture != null)          {            excelPicture.Image.Save(imagepath, System.Drawing.Imaging.ImageFormat.Jpeg);            Console.Write(imagepath + "\t");          }       else         {            Console.Write(worksheet.Cells[j, i].Value.ToString() + "\t");         }     }     else     {        Console.Write(worksheet.Cells[j, i].Value.ToString() + "\t");     }

输出结果如下:

631472518502cb820489e94adf68e7b9.png

          本次分享结束了,实际工作可能不会这么简单,因为实现的需求总是奇奇怪怪的。这次只是解决了xlsx文件的读取,写code的时候还是得掌握基本对象的使用,了解行列的索引这些差不多就可以成为一个合格的CV大师。

最后留给大家思考: 1.如一个单元格中多张图片的处理怎么办? 2.跨行合并单元格的数据如何去处理? 3.还有xls文件如何处理呢? 这些问题有兴趣的小伙伴可以实践一下,说不定哪天会用上~喜欢的小伙伴点个?!

33d3b980e256401a45ca2ceca44edc36.png

 9a239c47f0b036290d4557b77b1c9966.png  祝大家中秋快乐!9a239c47f0b036290d4557b77b1c9966.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值