我们有一个SSIS包,我们将数据加载到Excel电子表格中。 Excel列需要具有特殊字符的名称,例如“。”,“::” - ex:[ColumnA.property1],[ColumnB :: property2.extension2]。
当我们尝试运行SSIS包时,我们会收到错误(包围无效),因为我们无法将数据处理为包含这些特殊字符的电子表格列。
有没有办法容纳这些?我们被告知这些列名必须符合规定,但由于需要处理的数据太多(经常),我们无法手动执行此操作。
循环遍历列的代码(用C#编写)是:
foreach (DataRow dt_row in dt.Rows)
{
string SchemaName = "";
string TableName = "";
object[] array = dt_row.ItemArray;
SchemaName = array[0].ToString();
TableName = array[1].ToString();
//Load Data into DataTable from SQL ServerTable
// Assumes that connection is a valid SqlConnection object.
string queryString =
"SELECT * from " + SchemaName + "." + TableName;
SqlDataAdapter adapter = new SqlDataAdapter(queryString, myADONETConnection);
DataSet ds = new DataSet();
adapter.Fill(ds);
//Get Header Columns
string TableColumns = "";
// Get the Column List from Data Table so can create Excel Sheet with Header
foreach (DataTable table in ds.Tables)
{
foreach (DataColumn column in table.Columns)
{
TableColumns += column + "],[";
}
}
,收到的错误是:
System.Data.OleDb.OleDbException(0x80040E14):无效的包围 name'[ColumnA.property1]'。在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams,Object& executeResult)at System.Data.OleDb.OleDbCommand.ExecuteCommandText(对象&安培; executeResult)at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(的CommandBehavior 行为,String方法)at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()at ST_f776e39f704d46f98e2ddf46ae7ec8dd.ScriptMain.Main()