.net 将Excel中的选定列写入.txt文件

.net 将Excel中的选定列写入.txt文件,.net,vb.net,.net,Vb.net,我正在Visual Studio中构建Excel加载项,并尝试将用户选择的数据范围写入文本文件。用户可以在Windows窗体上选择几个可以是非连续的范围。选定范围的地址存储在集合范围集合中。到目前为止,我已尝试在这些范围内的单元格上循环,将单元格写入一个大字符串,最后将字符串写入.txt文件: Dim writefile作为新的StreamWriterfilePath&data.txt dim sep,文本,s为字符串 sep=; 对于rangesCollection中的每个引用 srow= 对

我正在Visual Studio中构建Excel加载项,并尝试将用户选择的数据范围写入文本文件。用户可以在Windows窗体上选择几个可以是非连续的范围。选定范围的地址存储在集合范围集合中。到目前为止,我已尝试在这些范围内的单元格上循环,将单元格写入一个大字符串,最后将字符串写入.txt文件:

Dim writefile作为新的StreamWriterfilePath&data.txt dim sep,文本,s为字符串 sep=; 对于rangesCollection中的每个引用 srow= 对于Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet.rangeref.Text中的每个单元格 srow=srow&cell.text&sep 下一个细胞 s=s&vbCrLf&srow 下一个参考 writefile.writes writefile.close

解决方案在稍大的数据集上变得非常缓慢。例如,写入3列数据(每个数据列的长度约为7500个单元格)大约需要15秒


有人能帮我找到一个更快的解决方案吗?

您可以将文件另存为CSV。 结果很容易用文本编辑器程序编辑,或者显然是以编程方式编辑。 它将为excel文件中的每一行写入一个文本行,用“;”分隔列

列的字母示例,行的数字示例:

A1;B1
A2;
A3;B3
A4;B4
A5;B5
;B6

您可以制作excel文件的临时副本,保留原始未编辑内容,从临时文件中删除未选中的单元格,然后将其另存为CSV文件。

我设法以稍微不同的方式解决了这个问题。在此处找到解决方案:

以前的问题是循环,通过访问每个单元格,解决方案是将整个范围写入数组并使用其元素:

Dim writefile作为新的StreamWriterfilePath&data.txt 对于rangesCollection中的每个引用 尺寸值集合长度,1作为对象 Dim以Excel.Range=Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet.rangeref.text的形式运行 values=ran.value 对于j=1至收集长度 writefile.Writevaluesj,>1&; 下一个 writefile.WritevbCrLf 下一个 writefile.close


这似乎很简单,也很基本,但也许这段代码可以在将来帮助别人。

一旦有机会,我会尝试一下。