Я не думаю, что вы можете создать временную таблицу в SQL так, как вы думаете, поскольку она существует только в рамках создаваемой процедуры запроса / хранимой процедуры.
Если электронная таблица имеет стандартный формат - это означает, что вы знаете столбцы, и они всегда одинаковы, вам нужно создать таблицу в SQL, чтобы поместить этот файл. Существует очень быстрый способ сделать это, SqlBulkCopy
// Load the reports in bulk
SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString);
// Map the columns
foreach(DataColumn col in dataTable.Columns)
bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);
bulkCopy.DestinationTableName = "SQLTempTable";
bulkCopy.WriteToServer(dataTable);
Но, если я правильно понимаю вашу проблему, вам не нужно использовать SQL-сервер для изменения данных в DataTable. Вы можете использовать движок JET, чтобы получить данные для вас.
// For CSV
connStr = string.Format("Provider=Microsoft.JET.OLEDB.4.0;Data Source={0};Extended Properties='Text;HDR=Yes;FMT=Delimited;IMEX=1'", Folder);
cmdStr = string.Format("SELECT * FROM [{0}]", FileName);
// For XLS
connStr = string.Format("Provider=Microsoft.JET.OLEDB.4.0;Data Source={0}{1};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'", Folder, FileName);
cmdStr = "select * from [Sheet1$]";
OleDbConnection oConn = new OleDbConnection(connStr);
OleDbCommand cmd = new OleDbCommand(cmdStr, oConn);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
oConn.Open();
da.Fill(dataTable);
oConn.Close();
Кроме того, в вашем коде вы спрашиваете, правильна ли ваша строка подключения. Я не думаю, что это так (но я могу ошибаться). Если у вас не работает попробуйте это.
connectionString="Data Source=localhost\<instance>;database=<yourDataBase>;Integrated Security=SSPI" providerName="System.Data.SqlClient"