还是C#的EXCEL应用,请高人指点——有关QueryTables的
我为了实现批量导入多个txt文本到EXCEL的多张Sheet中,写了一下代码:
for (int i=2;i<=FileName.Length+1;i++)
{
newSheet = newExcel.ActiveSheet;
newSheet.QueryTables.Add("TEXT;"+FilePath[i-2],newSheet.get_Range("$A$1"),nothing);
//newSheet.QueryTables[i-1].Name = FileName[i-2];
newSheet.QueryTables[i-1].FieldNames = true;
newSheet.QueryTables[i-1].RowNumbers = false;
newSheet.QueryTables[i-1].FillAdjacentFormulas = false;
newSheet.QueryTables[i-1].PreserveFormatting = true;
newSheet.QueryTables[i-1].RefreshOnFileOpen = false;
newSheet.QueryTables[i-1].RefreshStyle = MSExcel.XlCellInsertionMode.xlInsertDeleteCells;
newSheet.QueryTables[i-1].SavePassword = false;
newSheet.QueryTables[i-1].SaveData = true;
newSheet.QueryTables[i-1].AdjustColumnWidth = true;
newSheet.QueryTables[i-1].RefreshPeriod = 0;
newSheet.QueryTables[i-1].TextFilePromptOnRefresh = false;
newSheet.QueryTables[i-1].TextFilePlatform = 936;
newSheet.QueryTables[i-1].TextFileStartRow = 1;
newSheet.QueryTables[i-1].TextFileParseType = MSExcel.XlTextParsingType.xlDelimited;
newSheet.QueryTables[i-1].TextFileTextQualifier = MSExcel.XlTextQualifier.xlTextQualifierDoubleQuote;
newSheet.QueryTables[i-1].TextFileConsecutiveDelimiter = true;
newSheet.QueryTables[i-1].TextFileTabDelimiter = false;
newSheet.QueryTables[i-1].TextFileSemicolonDelimiter = false;
newSheet.QueryTables[i-1].TextFileCommaDelimiter = false;
newSheet.QueryTables[i-1].TextFileSpaceDelimiter = false;
newSheet.QueryTables[i-1].TextFileOtherDelimiter = "|";
newSheet.QueryTables[i-1].TextFileColumnDataTypes = ColumnDataType;
newSheet.QueryTables[i-1].TextFileTrailingMinusNumbers = true;
newSheet.QueryTables[i-1].Refresh(false);
newSheet.QueryTables[i - 1].Name = FileName[i - 2];
string tmp = newSheet.QueryTables[i - 1].Name;//临时变量,调试用
}
[解决办法]
试下:Worksheets.Add(nothing,newExcel.ActiveSheet,nothing,nothing);
[解决办法]
循环中再对每个sheet应该再激活一下:
((Excel.Worksheet)newSheet).Activate();
[解决办法]
newSheet=newExcel.Worksheets.Add(nothing, newExcel.ActiveSheet, nothing, nothing);是不是应该这样
((MSExcel.Worksheet)newSheet).Activate();