强制列顺序,Excel数据表

我有一个Excel工作簿,我用作报告模板。 我在C#应用程序中更改每个数据透视表和数据表中的数据源。 当我更改数据源数据源时,它会拖动列。 有没有办法强制列顺序?

private void RefreshRawData(string dataSource, string connection) { xl._Worksheet ws = (xl._Worksheet)xlTemplate.Worksheets["Raw Data"]; xl.ListObject table = ws.ListObjects["Table_ExternalData_1"]; xl.QueryTable qt = table.QueryTable; qt.CommandText = dataSource; qt.Connection = GetExcelConnectionString((string)qt.Connection); qt.BackgroundQuery = false; qt.Refresh(m); Marshal.ReleaseComObject(ws); Marshal.ReleaseComObject(table); Marshal.ReleaseComObject(qt); ws = null; table = null; qt = null; } 

欢迎来到Interop的狂野世界。

我不得不删除并重新创build表。

请注意ListObject.Add函数中的参数他们是奇怪的生物。

 private void RefreshRawData(string dataSource, string connection) { xl._Worksheet ws = (xl._Worksheet)xlTemplate.Worksheets["Raw Data"]; xl.ListObject table = ws.ListObjects["Table_ExternalData_1"]; xl.QueryTable qt = table.QueryTable; string connStr = GetExcelConnectionString((string)qt.Connection); table.Delete(); xl.Range r = ws.get_Range("A1", "A1"); table = ws.ListObjects.Add(xl.XlListObjectSourceType.xlSrcExternal, (object)connStr, m, xl.XlYesNoGuess.xlGuess, r); qt = table.QueryTable; qt.CommandType = xl.XlCmdType.xlCmdSql; qt.CommandText = dataSource; qt.RowNumbers = false; qt.FillAdjacentFormulas = false; qt.PreserveFormatting = true; qt.RefreshOnFileOpen = false; qt.BackgroundQuery = true; qt.RefreshStyle = xl.XlCellInsertionMode.xlInsertDeleteCells; qt.SavePassword = false; qt.SaveData = true; qt.AdjustColumnWidth = true; qt.RefreshPeriod = 0; qt.PreserveColumnInfo = true; qt.ListObject.DisplayName = "Table_ExternalData_1"; qt.Refresh(false); Marshal.ReleaseComObject(ws); Marshal.ReleaseComObject(table); Marshal.ReleaseComObject(qt); ws = null; table = null; qt = null; }