ExcelPackage的使用

如何读取合并单元格中的值

如何转换Excel中读取到的日期是数字


ExcelPackage.LicenseContext = OfficeOpenXml.LicenseContext.NonCommercial;

try

{

using MemoryStream memoryStream = new MemoryStream(fileData.Content);

using ExcelPackage package = new ExcelPackage(memoryStream);

字典省市区 省 = View.ObjectSpace.FirstOrDefault<字典省市区>(c => c.名称 == "缺数据");  字典省市区 市 = View.ObjectSpace.FirstOrDefault<字典省市区>(c => c.名称 == "待");  字典省市区 区 = View.ObjectSpace.FirstOrDefault<字典省市区>(c => c.名称 == "补全");    地址 地区 = View.ObjectSpace.CreateObject<地址>();  地区.省 = 省;  地区.市 = 市;  地区.区 = 区;

供应商联系人 供应商联系人 = View.ObjectSpace.FirstOrDefault<供应商联系人>(c => c.姓名 == "缺数据待补全");

string[] 门窗幕墙 = { "02门窗幕墙", "门窗、幕墙" };  string[] 装饰材料 = { "01装饰材料", "室内外装修" };  string[] 土建材料 = { "04土建材料", "缺数据待补全" };  string[] 景观工程 = { "08景观工程", "缺数据待补全" };  //List sheetnames = [门窗幕墙, 装饰材料, 土建材料, 景观工程];

Listsheetnames = [土建材料, 景观工程];  foreach (var sheetname in sheetnames)  {      ExcelWorksheet worksheet = package.Workbook.Worksheets[sheetname[0]];      材料分类 一级分类 = View.ObjectSpace.FirstOrDefault<材料分类>(c => c.名称 == sheetname[1]);      材料_分类 二级分类 = 一级分类; // 一级分类.下级.FirstOrDefault();

  for (int i = worksheet.Dimension.Start.Row + 2; i <= worksheet.Dimension.End.Row; i++)

  { 

      #region 无差别封装对象

      材价信息 材价信息 = View.ObjectSpace.CreateObject<材价信息>();

      材价信息.一级分类 = 一级分类;

      材价信息.二级分类 = 二级分类;

      try

      {

          string 名称 = "缺数据待补全";

          if (worksheet.Cells[i, 5].Value != null)

          {

              名称 = worksheet.Cells[i, 5].Value.ToString()?.Trim();

          }

          材价信息.材料设备 = 名称;

      }

      catch (Exception ex)

      {

          //BlazorShowMessage.ShowMessage(ex.Message, AlertLevel.Error);

      } 

      try

      {

          string 单位名称 = "缺数据待补全";

          if (worksheet.Cells[i, 10].Value != null && worksheet.Cells[i, 10].Value.ToString().Trim() != "")

          {

              单位名称 = worksheet.Cells[i, 10].Value.ToString().Trim();

          }

          材料_单位 材料单位 = View.ObjectSpace.FirstOrDefault<材料_单位>(c => c.名称 == 单位名称);

          材价信息.单位 = 材料单位;

          //供货商地区

          材价信息.地区 = 地区;

      }

      catch (Exception ex)

      {

          //BlazorShowMessage.ShowMessage(ex.Message, AlertLevel.Error);

      }

      try

      {

          string 品牌名称 = "缺数据待补全";

          //如何读取合并单元格中的值

          if (worksheet.Cells[i, 3].Merge == true)

          {

              string rangecells = worksheet.MergedCells[i, 3];

              string[] rangeids = rangecells.Split(':');

              if (rangeids.Length > 1)

              {

                  string rangevaluecellid = rangeids[0];

                  if (worksheet.Cells[rangevaluecellid].Value != null && worksheet.Cells[rangevaluecellid].Value.ToString().Trim() != "")

                  {

                      品牌名称 = worksheet.Cells[rangevaluecellid].Value.ToString().Trim();

                  }

              }

          }

          else

          {

              if (worksheet.Cells[i, 3].Value != null && worksheet.Cells[i, 3].Value.ToString().Trim() != "")

              {

                  品牌名称 = worksheet.Cells[i, 3].Value.ToString().Trim();

              }

          }

          品牌 品牌 = View.ObjectSpace.FirstOrDefault<品牌>(c => c.品牌名称 == 品牌名称);

          材价信息.品牌 = 品牌;

      }

      catch (Exception ex)

      {

          //BlazorShowMessage.ShowMessage(ex.Message, AlertLevel.Error);

      }

      try

      {

          string 品牌档次等级 = "";

          if (worksheet.Cells[i, 4].Merge == true)

          {

              string rangecells = worksheet.MergedCells[i, 4];

              string[] rangeids = rangecells.Split(':');

              if (rangeids.Length > 1)

              {

                  string rangevaluecellid = rangeids[0];

                  if (worksheet.Cells[rangevaluecellid].Value != null && worksheet.Cells[rangevaluecellid].Value.ToString().Trim() != "")

                  {

                      品牌档次等级 = worksheet.Cells[rangevaluecellid].Value.ToString().Trim();

                  }

              }

          }

          else

          {

              if (worksheet.Cells[i, 4].Value != null && worksheet.Cells[i, 4].Value.ToString().Trim() != "")

              {

                  品牌档次等级 = worksheet.Cells[i, 4].Value.ToString().Trim();

              }

          }

          switch (品牌档次等级)

          {

              case "A":

                  材价信息.档次 = 品牌档次.高档;

                  break;

              case "B":

                  材价信息.档次 = 品牌档次.中档;

                  break;

              case "C":

                  材价信息.档次 = 品牌档次.普通;

                  break;

          }

      }

      catch (Exception ex)

      {

          //BlazorShowMessage.ShowMessage(ex.Message, AlertLevel.Error);

      }

      try

      {

          // 规格/参数

          string 分类名称 = "";

          if (worksheet.Cells[i, 2].Merge == true)

          {

              string rangecells = worksheet.MergedCells[i, 2];

              //B11: B15

              string[] rangeids = rangecells.Split(':');

              if (rangeids.Length > 1)

              {

                  string rangevaluecellid = rangeids[0];

                  if (worksheet.Cells[rangevaluecellid].Value != null && worksheet.Cells[rangevaluecellid].Value.ToString().Trim() != "")

                  {

                      分类名称 = worksheet.Cells[rangevaluecellid].Value.ToString().Trim();

                  }

              }

          }

          else

          {

              if (worksheet.Cells[i, 2].Value != null && worksheet.Cells[i, 2].Value.ToString().Trim() != "")

              {

                  分类名称 = worksheet.Cells[i, 2].Value.ToString().Trim();

              }

          }

          string 型号 = "";

          if (worksheet.Cells[i, 6].Value != null && worksheet.Cells[i, 6].Value.ToString().Trim() != "")

          {

              型号 = worksheet.Cells[i, 6].Value.ToString().Trim();

          }

          string 规格 = "";

          if (worksheet.Cells[i, 7].Value != null && worksheet.Cells[i, 7].Value.ToString().Trim() != "")

          {

              规格 = worksheet.Cells[i, 7].Value.ToString().Trim();

          }

          string 指标参数 = "";

          if (worksheet.Cells[i, 8].Value != null && worksheet.Cells[i, 8].Value.ToString().Trim() != "")

          {

              指标参数 = worksheet.Cells[i, 8].Value.ToString().Trim();

          }

          string 技术要求 = "";

          if (worksheet.Cells[i, 9].Value != null && worksheet.Cells[i, 9].Value.ToString().Trim() != "")

          {

              技术要求 = worksheet.Cells[i, 9].Value.ToString().Trim();

          }

          材价信息.规格 = sheetname[0] + " " + 分类名称 + " " + 型号 + " " + 规格 + " " + 指标参数 + "  " + 技术要求;

          if (材价信息.规格.Trim() == "")

          {

              材价信息.规格 = "缺数据待补全";

          }

      }

      catch (Exception ex)

      {

          //BlazorShowMessage.ShowMessage(ex.Message, AlertLevel.Error);

      }

      try

      {

          材价信息.含税市场价 = Convert.ToDecimal(worksheet.Cells[i, 11].Value);

      }

      catch (Exception ex)

      {

          //BlazorShowMessage.ShowMessage(ex.Message, AlertLevel.Error);

      }

      try

      {

          string 供应商名称 = "缺数据待补全";

          if (worksheet.Cells[i, 15].Merge == true)

          {

              string rangecells = worksheet.MergedCells[i, 15];

              string[] rangeids = rangecells.Split(':');

              if (rangeids.Length > 1)

              {

                  string rangevaluecellid = rangeids[0];

                  if (worksheet.Cells[rangevaluecellid].Value != null && worksheet.Cells[rangevaluecellid].Value.ToString().Trim() != "")

                  {

                      供应商名称 = worksheet.Cells[rangevaluecellid].Value.ToString().Trim();

                  }

              }

          }

          else

          {

              if (worksheet.Cells[i, 15].Value != null && worksheet.Cells[i, 15].Value.ToString().Trim() != "")

              {

                  供应商名称 = worksheet.Cells[i, 15].Value.ToString().Trim();

              }

          }

          供应商 供应商 = View.ObjectSpace.FirstOrDefault<供应商>(c => c.供应商名称 == 供应商名称);

          材价信息.报价供应商 = 供应商;

      }

      catch (Exception ex)

      {

          //BlazorShowMessage.ShowMessage(ex.Message, AlertLevel.Error);

      }

      try

      {

          if (worksheet.Cells[i, 13].Value != null && worksheet.Cells[i, 13].Value.ToString().Trim() != "")

          {

              材价信息.报价时间 = DateTime.FromOADate(Convert.ToDouble(worksheet.Cells[i, 13].Value));

          }

          else

          {

              材价信息.报价时间 = DateTime.Now;

          }

      }

      catch (Exception ex)

      {

          //BlazorShowMessage.ShowMessage(ex.Message, AlertLevel.Error);

      }

      try

      {

          材价信息.联系人 = 供应商联系人;

          if (worksheet.Cells[i, 18].Value != null && worksheet.Cells[i, 18].Value.ToString().Trim() != "")

          {

              材价信息.备注 = worksheet.Cells[i, 18].Value.ToString().Trim();

          }

      }

      catch (Exception ex)

      {

          //BlazorShowMessage.ShowMessage(ex.Message, AlertLevel.Error);

      }

      #endregion

      var exists_材料设备 = View.ObjectSpace.FirstOrDefault<材价信息>(c => c.材料设备 == 材价信息.材料设备 && c.品牌 == 材价信息.品牌 && c.档次 == 材价信息.档次 && c.规格 == 材价信息.规格 && c.单位 == 材价信息.单位 && c.含税市场价 == 材价信息.含税市场价 && c.报价时间 == 材价信息.报价时间);

      if (exists_材料设备 == null)

      {

          View.ObjectSpace.CommitChanges();

      }

  }

}

BlazorShowMessage.ShowMessage("导入成功", AlertLevel.Success);

  }

catch (Exception exception)

{

BlazorShowMessage.ShowMessage(exception.Message, AlertLevel.Error);

}

finally

{

View.Refresh(true);

}

```

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容