C# 通过MVC应用程序将电子表格数据导入SQL数据库,是否有方法在导入过程中为电子表格上没有的列赋值?

C# 通过MVC应用程序将电子表格数据导入SQL数据库,是否有方法在导入过程中为电子表格上没有的列赋值?,c#,sql-server,excel,asp.net-mvc,C#,Sql Server,Excel,Asp.net Mvc,我正在编写一个MVC应用程序,目前正在努力从Excel电子表格导入员工数据。我在数据库中有两个非空列,它们不在excel文件中(employeestatus-bit和datecreated-datetime) 导入其他列时,是否有方法设置这些列的值?如果我在电子表格中为这些字段创建新的列,并将它们添加到映射中,那么效果会非常好,但我希望避免客户端不得不这样做 //where data gets stored in db sqlBul

我正在编写一个MVC应用程序,目前正在努力从Excel电子表格导入员工数据。我在数据库中有两个非空列,它们不在excel文件中(employeestatus-bit和datecreated-datetime)

导入其他列时,是否有方法设置这些列的值?如果我在电子表格中为这些字段创建新的列,并将它们添加到映射中,那么效果会非常好,但我希望避免客户端不得不这样做

                //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();
我的搜索让我进入了一个示例圈,所有需要的数据都已经在电子表格中了

如果我先把它放到临时表中,那么我可以为所有行设置列值吗


感谢您

如果您的
恐惧者
可能是通过jet/ace驱动程序连接到电子表格的数据读取器:

var cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", excelConnStr);
dReader = cmd.ExecuteReader();
您可以将要添加到该sql中的列添加到该sql中,以便它们在读卡器上可用:

var cmd = new OleDbCommand("SELECT *, 1 as status, NOW() as empdatecreated FROM [Sheet1$]", excelConnStr);
dReader = cmd.ExecuteReader();

如果您的
dReader
可能是通过jet/ace驱动程序连接到电子表格的数据读取器:

var cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", excelConnStr);
dReader = cmd.ExecuteReader();
您可以将要添加到该sql中的列添加到该sql中,以便它们在读卡器上可用:

var cmd = new OleDbCommand("SELECT *, 1 as status, NOW() as empdatecreated FROM [Sheet1$]", excelConnStr);
dReader = cmd.ExecuteReader();

恐怖分子的定义是什么?我的第一个想法是修改驱动它的东西,这样它就添加了一些包含你想要的数据的假列。恐惧的定义是什么?我的第一个想法是修改驱动它的东西,这样它会添加一些包含您想要的数据的假列谢谢您的帮助!我不得不使用DATE()而不是NOW(),但是使用“1作为状态,DATE()作为empdatecreated”wokred完美。再次感谢你!谢谢你的帮助!我不得不使用DATE()而不是NOW(),但是使用“1作为状态,DATE()作为empdatecreated”wokred完美。再次感谢你!