通过MVC应用程序将电子表格数据导入SQL数据库,有没有办法在导入期间为不在电子表格上的列分配值?
Posted
技术标签:
【中文标题】通过MVC应用程序将电子表格数据导入SQL数据库,有没有办法在导入期间为不在电子表格上的列分配值?【英文标题】:Import spreadsheet data into SQL database through MVC application, is there a way to assign values for columns not on the spreadsheet during import? 【发布时间】:2020-07-19 23:16:05 【问题描述】:我正在编写一个 MVC 应用程序,目前正在努力从 Excel 电子表格中导入员工数据。我在数据库中有 2 个非空列,这些列不存在于 excel 文件中(employeestatus - 位和 datecreated - 日期时间)。
在导入其他列时,有没有办法为这些列设置值?如果我在电子表格中为这些字段创建新列并将它们添加到映射中,它会完美运行,但我想避免客户必须这样做。
//where data gets stored in db
sqlBulk.DestinationTableName = "Employee";
//mappings
sqlBulk.ColumnMappings.Add("ID", "id");
sqlBulk.ColumnMappings.Add("LastName", "employeelastname");
sqlBulk.ColumnMappings.Add("FirstName","employeefirstname");
sqlBulk.ColumnMappings.Add("MI", "employeemi");
sqlBulk.ColumnMappings.Add("StreetAddress1", "streetaddress");
sqlBulk.ColumnMappings.Add("City", "employeecity");
sqlBulk.ColumnMappings.Add("State", "employeestate");
sqlBulk.ColumnMappings.Add("Zip", "employeezip");
sqlBulk.ColumnMappings.Add("Payroll", "payroll");
sqlBulk.ColumnMappings.Add("Salary", "salary");
sqlBulk.ColumnMappings.Add("POBox", "pobox");
sqlBulk.ColumnMappings.Add("POBoxCity", "poboxcity");
sqlBulk.ColumnMappings.Add("POBoxState", "poboxstate");
sqlBulk.ColumnMappings.Add("Org", "orgcode");
//write and close connection
sqlBulk.WriteToServer(dReader);
excelConnection.Close();
理想情况下,应该是这样的:
sqlBulk.ColumnMapping.Set("status", "1");
sqlBulk.ColumnMapping.Set("empdatecreated") = DateTime.Now();
我的搜索将我带入了一系列示例,其中所有需要的数据都已在电子表格中。
如果我先把它放到一个临时表中,我可以为所有行设置列值吗?
谢谢
【问题讨论】:
dReader的定义是什么?我的第一个想法是修改驱动它的东西,以便它添加一些带有您想要的数据的假列 【参考方案1】:如果您的 dReader
可能是通过 jet/ace 驱动程序连接到电子表格的数据读取器:
var cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", excelConnStr);
dReader = cmd.ExecuteReader();
您可以将所需的列添加到该 sql 中,以便在阅读器上使用它们:
var cmd = new OleDbCommand("SELECT *, 1 as status, NOW() as empdatecreated FROM [Sheet1$]", excelConnStr);
dReader = cmd.ExecuteReader();
【讨论】:
感谢您的帮助!我不得不使用 DATE() 而不是 NOW(),但使用“1 作为状态,DATE() 作为 empdatecreated”工作完美。再次感谢您!以上是关于通过MVC应用程序将电子表格数据导入SQL数据库,有没有办法在导入期间为不在电子表格上的列分配值?的主要内容,如果未能解决你的问题,请参考以下文章
将 Excel 电子表格列导入 SQL Server 数据库
如何在导入到 SQL Server 数据库时删除 Excel 电子表格的顶部行