读书人

仍是C#的EXCEL应用请高人指点有

发布时间: 2013-08-09 15:16:24 作者: rapoo

还是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;//临时变量,调试用

}


这是其中的一段代码,程序可以运行,只是一直在同一张Sheet里面重复导入第一个文本,并没有像预期那样将多个文本导入多个Sheet。调试中,我设置的tmp变量值一直在变,说明系统有读到其他文件。请各路高人指点迷津~先谢谢啦~!
——————————————————————————————
个人感觉“newSheet = newExcel.ActiveSheet;"可能有点问题,但始终不确定,也不知道怎么改,求助!!! C# , Excel


[解决办法]
试下: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();
是不是应该这样
[解决办法]


引用:
并且,名字也没有改成Filename[i-2]对应的名字

改名应该是newSheet.Name=Filename[i-2]
[解决办法]
要针对新加的sheet进行操作:
newSheet = newExcel.Worksheets.Add(nothing, newExcel.ActiveSheet, nothing, nothing);
还有你的QueryTable一直这样[i-1]随i递增干什么?每个sheet加一个然后就用它就可以了。

读书人网 >C#

热点推荐