将数据从excel导入db的例外情况

时间:2016-02-02 14:18:56

标签: exception-handling asp.net-mvc-5 aspose aspose-cells

public List<Project> ImportProjectsFromExcel(string path)
        {
            LoadOptions loadOptionForXlsx = new LoadOptions(LoadFormat.Xlsx);
            Workbook workbook = new Workbook(path, loadOptionForXlsx);
            char column = 'A';
            var project = new Project();
            var projects = new List<Project>();

            var rowcount = workbook.Worksheets["Sheet1"].Cells.MaxDataRow;
            for (int index = 2; index <= rowcount + 1; )
            {
                var cell = workbook.Worksheets["Sheet1"].Cells[column + index.ToString()];
                switch (column)
                {

                    case 'A':
                        project.ProjectName = cell.StringValue;
                        ++column;
                        break;
                    case 'B':
                        project.ProjectCode = cell.StringValue;
                        ++column;
                        break;
                    case 'C':
                        project.Description = cell.StringValue;
                        ++column;
                        break;

                    case 'D':
                        project.EngagementManagerId = cell.IntValue;
                        ++column;
                        break;

                    case 'E':
                        project.ProjectManagerId = cell.IntValue;
                        ++column;
                        break;                        

                    case 'F':
                        project.AdditionalNotes = cell.StringValue;
                        ++column;
                        try
                        {
                            AddProject(project);
                            projects.Add(project);

                        }
                        catch (Exception dbEx)
                        {
                            var message = dbEx.Message;
                            dbEx = null;
                        }
                        project = new Project();
                        ++index;
                        column = 'A';
                        break;

                }
            }
            return projects;
        }

问题: 这里我从Excel文件中读取数据并将其插入数据库中,而projectId是项目的主键。但是如果ProjectId在一个单元格中重复,则会发生异常,但如果ProjectId是唯一的,那么对于下一个单元格#39;然后它也会进入catch并为ProjectId提供异常。 如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我认为您正在使用自己的.NET代码来添加/更新从工作表单元格中提取的值(通过Aspose.Cells API)。如果您可以通过Aspose.Cells API从工作表中将数据导出到Arrays或DataTable会更好(请参阅document以供参考),然后更新您的数据库表(通过您自己的.NET代码)。我也不确定你发现了什么异常,你自己的.NET API代码或Aspose.Cells API引发了异常?如果您能在Aspose.Cells forums中发布示例项目和模板文件,我们将不胜感激,我们会检查并尽快为您提供帮助。

我是Aspose的开发人员传道者。