Я создаю функцию для импорта Excel (.Xlsx) в базу данных SQL с помощью c# кода и хранимой процедуры.
При нажатии кнопки импорта используется следующий код.
publi c DataSet ImportExcelXLS (строка FileName) {DataSet output = new DataSet (); попробуйте {
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended
Properties=\"Excel 12.0;HDR=" + HDR + ";IMEX=1\"";
OleDbConnection connExcel = new OleDbConnection(strConn);
OleDbCommand cmdExcel = new OleDbCommand();
cmdExcel.Connection = connExcel;
connExcel.Open();
DataTable dtExcelSchema;
dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
connExcel.Close();
connExcel.Open();
OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
string SheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
cmdExcel.CommandText = "SELECT * From [" + SheetName + "]";
da.SelectCommand = cmdExcel;
da.Fill(output);
connExcel.Close();
}
catch (Exception ex)
{
throw;
}
return output;
}
и затем преобразуйте Excel в таблицу данных, используя следующую функцию.
public DataTable Convert_Commissionxlxs_toDataTable(string strFilePath)
{
ExL oExl = new ExL();
FileUploadBO fileuploadBo_obj = new FileUploadBO();
DataSet ds = new DataSet();
ds = oExl.ImportExcelXLS(strFilePath, 0);
DataTable dt = new DataTable();
dt = ds.Tables[0];
for (int i = 1; i < dt.Columns.Count + 1; i++)
{
dt.Columns["F" + i].ColumnName = fileuploadBo_obj.Get_ExcelColumnName(i);
}
return dt;
}
после создания таблицы данных я передаю ее в хранимую процедуру следующим образом:
SQL Код процедуры:
ALTER proc [dbo].[sp_Save]
(
@Trailing_Credit dbo.[TrailingCredit_Type] readonly
)
Этот код работает нормально. в SQL серверная хранимая процедура i Используется табличный параметр (пользовательская таблица). но когда изменяется мой номер столбца в файле Excel, выдается ошибка: «Вы передали 20 параметров вместо 32». Как я могу написать процедуру SQL, чтобы принимать любое количество столбцов, используя параметр с табличным значением. или любой другой лучший способ сделать это. Примечание. Количество столбцов в файле Excel меняется ежедневно.
Спасибо.