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提供异常。 如何解决这个问题?
答案 0 :(得分:0)
我认为您正在使用自己的.NET代码来添加/更新从工作表单元格中提取的值(通过Aspose.Cells API)。如果您可以通过Aspose.Cells API从工作表中将数据导出到Arrays或DataTable会更好(请参阅document以供参考),然后更新您的数据库表(通过您自己的.NET代码)。我也不确定你发现了什么异常,你自己的.NET API代码或Aspose.Cells API引发了异常?如果您能在Aspose.Cells forums中发布示例项目和模板文件,我们将不胜感激,我们会检查并尽快为您提供帮助。
我是Aspose的开发人员传道者。