Я пытаюсь создать копию шаблона Excel, который уже существует в документе Excel, над которым ведется работа, и в который вставляются данные. Код предназначен для получения данных из таблицы, вставки их в определенные ячейки файла Excel, в которых над ними выделены выделенные столбцы, чтобы они были отформатированы. Я использую задачу сценария служб SSIS для перебора каждой строки данных в таблице. Как только данные вставлены, я пытаюсь создать копию шаблона для следующей строки данных для вставки.
//Foreach record set of data in table
//Insert data into the template into the specific cells
//Create new sheet for next iteration of data to be inserted
//end script
Я могу использовать ТОЛЬКО метод / библиотеку System.Data.OleDb, потому что UAT иСерверы PROD не могут принимать дополнительные библиотеки в это время. Таким образом, алгоритм настроен так. Сценарий находится в цикле Foreach, поэтому ...
Я ожидаю, что он создаст копию текущего листа Excel, в который он вставляет данные.
using (OleDbConnection ExcelConnection = new OleDbConnection(ExcelLocationConnectionString))
{
ExcelConnection.Open();
DataTableCollection TablesInFile = ExcelConnection.GetSchema("Tables").DataSet.Tables;
using (OleDbCommand InsertDataCommand = new OleDbCommand())
{
InsertDataCommand.Connection = ExcelConnection;
DataTable TableToInsertDataInto = TablesInFile[TablesInFile.Count];//Index could be out of range
if (YestAccountBranch == TodayAccountBranch)
AccountBranchChange = "No changes have been made to Account Branch.";
if (YestAccountType == TodayAccountType)
AccountTypeChange = "No changes have been made to Account Type.";
if (YestCostCenter == TodayCostCenter)
CostCenterChange = "No changes have been made to Cost Center.";
InsertDataSQL = "INSERT INTO [" + TableToInsertDataInto.ToString() + "$B5:F5:I5:L5:P5:T5:Y5:F2] VALUES('" + AccountNumber + "','" +
"" + CostCenterChange + "','" + AccountTypeChange + "','" + AccountBranchChange + "','" + TransactionLimit +
"','"+ DailyCumulativeLimit +"','" + BLCompanyID + "/" + ClientName + "','" + DateTime.Now.ToShortDateString().ToString() + "')";
InsertDataCommand.CommandText = InsertDataSQL;
InsertDataCommand.ExecuteNonQuery();
}
//Create table in excel sheet
using (OleDbCommand CreateTableCommand = new OleDbCommand())
{
CreateTableCommand.Connection = ExcelConnection;
string tableName = "AccountChange" + TablesInFile.Count.ToString() + 1;
CreateTableCommand.CommandText = $"CREATE TABLE [{tableName}]";
}
}