Как создать новую копию существующей таблицы Excel (таблицы) в файле Excel, используя только OLEDB C # SSIS - PullRequest
2 голосов
/ 29 октября 2019

Я пытаюсь создать копию шаблона 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}]";

    }

}
...