如何读取合并单元格中的值
如何转换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);
}
```