Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel只接受c#中没有数据的行……我的代码适用于某些Excel工作表,而不是所有工作表_C#_Model View Controller - Fatal编程技术网

Excel只接受c#中没有数据的行……我的代码适用于某些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.

由不同的客户制作的Excel表格…当我制作时,代码有效,但当用户制作时无效。Excel表格有什么问题吗?所以,我可以这样告诉用户制作。或者我可以用我的代码做任何事情

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={“对象引用未设置为对象的实例”。}