Excel只接受c#中没有数据的行……我的代码适用于某些Excel工作表,而不是所有工作表
由不同的客户制作的Excel表格…当我制作时,代码有效,但当用户制作时无效。Excel表格有什么问题吗?所以,我可以这样告诉用户制作。或者我可以用我的代码做任何事情Excel只接受c#中没有数据的行……我的代码适用于某些Excel工作表,而不是所有工作表,c#,model-view-controller,C#,Model View Controller,由不同的客户制作的Excel表格…当我制作时,代码有效,但当用户制作时无效。Excel表格有什么问题吗?所以,我可以这样告诉用户制作。或者我可以用我的代码做任何事情 private void MeterUpdateByExcelSheet(HttpPostedFileBase file) { List<string> errorMessages = new List<string>(); int siteId = Helpers.
private void MeterUpdateByExcelSheet(HttpPostedFileBase file)
{
List<string> errorMessages = new List<string>();
int siteId = Helpers.SiteHelpers.Functions.GetSiteIdOfLoginUser().Value;
var stream = file.InputStream;
using (var package = new ExcelPackage(stream))
{
//getting number of sheets
var sheets = package.Workbook.Worksheets;
int totalProcessedMeters = 0;
if (sheets.Count > 0)
{
var sheet = sheets.FirstOrDefault();
//getting number of rows
var rows = sheet.Dimension.End.Row;
for (int row = 2; row <= rows; row++)
{
//get data for a row from excel
var meterNo = Convert.ToString(sheet.Cells[row, 1].Value);
int? sanctionLoadMains = (int)Convert.ToDecimal(sheet.Cells[row, 2].Value);
int? sanctionLoadDG = (int)Convert.ToDecimal(sheet.Cells[row, 3].Value);
int? unitArea = (int)Convert.ToDecimal(sheet.Cells[row, 4].Value);
int? creditLimit = (int)Convert.ToDecimal(sheet.Cells[row, 5].Value);
int? sMSWarning = (int)Convert.ToDecimal(sheet.Cells[row, 6].Value);
int? sMSWarning1 = (int)Convert.ToDecimal(sheet.Cells[row, 7].Value);
string date = sheet.Cells[row, 8].Value.ToString();
DateTime billingDate;
if (string.IsNullOrEmpty(date))
{
errorMessages.Add("Date is not given for MeterNo " + meterNo + " at row " + row);
continue;
}
if (!DateTime.TryParseExact(date, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out billingDate))
{
errorMessages.Add("Date format is not correct for MeterNo. " + meterNo + " at row " + row);
continue;
}
if (!string.IsNullOrEmpty(meterNo))
{
meterNo = meterNo.PadLeft(9, '0');
var oldMeter = _meterRepository.GetBySiteIdAndMeterNo(siteId, meterNo);
var newMeter = _meterRepository.GetBySiteIdAndMeterNo(siteId, meterNo);
int wattUnit = 1000;//loads should be multiple of 1000(watt)
int smsWarningUnit = 100;//sms warnings should be multiple of 100
if (newMeter == null)
{
errorMessages.Add("MeterNo. " + meterNo + " does not exist.");
continue;
}
if (sanctionLoadMains.HasValue && sanctionLoadMains >= 500)
{
newMeter.LoadSenctionMain = sanctionLoadMains.Value;
}
if (sanctionLoadDG.HasValue && sanctionLoadDG >= 500)
{
newMeter.LoadSenctionDG = sanctionLoadDG.Value;
}
if (unitArea.HasValue)
{
newMeter.UnitArea = unitArea.Value;
}
if (creditLimit.HasValue)
{
newMeter.CreditLimit = creditLimit.Value;
}
if (sMSWarning.HasValue && sMSWarning >= 100)
{
newMeter.SMSWarningAmount = sMSWarning.Value;
}
if (sMSWarning1.HasValue && sMSWarning1 >= 100)
{
newMeter.SMSWarning1Amount = sMSWarning1.Value;
}
if (billingDate != null)
{
newMeter.BillingDate = billingDate.ToIndiaDateTime();
}
_meterRepository.AddOrUpdate(newMeter);
var meterNotes = Helpers.MeterHelpers.Functions.GetMeterNote(oldMeter, newMeter);
Helpers.MeterHelpers.Functions.AddMeterNotes(meterNo, meterNotes);
totalProcessedMeters++;
}
}
TempData["SuccessMessage"] = totalProcessedMeters + " Meter(s) have been updated successfully";
}
private void MeterUpdateByExcelSheet(HttpPostedFileBase文件)
{
List errorMessages=新列表();
int siteId=Helpers.sitehelopers.Functions.GetSiteIdOfLoginUser().Value;
var stream=file.InputStream;
使用(var包=新的ExcelPackage(流))
{
//获取张数
var sheets=package.Workbook.Worksheets;
int totalProcessedMeters=0;
如果(sheets.Count>0)
{
var sheet=sheets.FirstOrDefault();
//获取行数
变量行=sheet.Dimension.End.Row;
用于(int行=2;行=500)
{
newMeter.LoadSenctionMain=许可的LoadMains.Value;
}
如果(sanctionLoadDG.HasValue&&sanctionLoadDG>=500)
{
newMeter.LoadSenctionDG=许可负载dg.Value;
}
if(单位面积价值)
{
newMeter.unitara=unitara.Value;
}
if(creditLimit.HasValue)
{
newMeter.CreditLimit=CreditLimit.Value;
}
如果(smswaning.HasValue&&smswaning>=100)
{
newMeter.smswaningamount=smswaning.Value;
}
如果(smswaring1.HasValue&&smswaring1>=100)
{
newMeter.smswaring1amount=smswaring1.Value;
}
如果(billingDate!=null)
{
newMeter.BillingDate=BillingDate.ToIndiadeTime();
}
_meterRepository.AddOrUpdate(newMeter);
var meterNotes=Helpers.MeterHelpers.Functions.GetMeterNote(oldMeter,newMeter);
Helpers.MeterHelpers.Functions.AddMeterNotes(meterNo,meterNotes);
totalProcessedMeters++;
}
}
TempData[“成功消息”]=totalProcessedMeters+“已成功更新仪表”;
}
它不起作用
它是什么意思?你有什么错误吗?@Chetan Ranpariya,是的。。这给了我一个例外我的心灵感应现在一天都不起作用了。。。你能分享你得到的异常以及哪一行代码给出了异常吗?@Chetan Ranpariya,当我使excel表的值与客户端的值相同时…我的代码工作得很好..它有10行..但当我尝试上载客户端excel文件时..它需要240行..并且出现异常..就像它需要空值..@Chetan Ranpariya,ex={“对象引用未设置为对象的实例”。}