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);

}

```

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,695评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,569评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,130评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,648评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,655评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,268评论 1 309
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,835评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,740评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,286评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,375评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,505评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,185评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,873评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,357评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,466评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,921评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,515评论 2 359

推荐阅读更多精彩内容