VSTO Excel另存为Unicode文本并转换为CSV

时间:2011-03-07 15:04:50

标签: .net vsto excel-2007

我想使用Excel将我的CSV文件保存为unicode。我的CSV文件中有一些非ASCII字符。我在VSTO加载项应用程序中使用SaveAs方法。据我所知,无法在SaveAs方法中选择文件格式为CSV并生成Unicode文件。

经过大量搜索,我得出结论,只有通过使用SaveAs方法获取Unicode文件的方法是选择UnicodeText作为文件格式。但是这会产生单独的文件TAB分离。

所以我决定将文件保存为unicode文本(Tab分隔),然后读取文件并用逗号替换所有TAB字符以生成我的CSV文件。但是这带来了另一个问题:文件仍然由excel打开,并且出现了“文件被另一个进程使用”的错误。我试图在工作簿的Add-In,BeforeClose事件和VSTO应用程序的Disposed事件的ShutDown事件中修改文件但没有工作。

VSTO加载项内是否有任何方法告诉Excel关闭文件?

1 个答案:

答案 0 :(得分:0)

我知道这个回复有点晚了,你现在可能已经找到了答案。但是,如果有其他人遇到这个,这是一个可能的解决方案,

您可以使用临时文件另存为unicode,然后通过用逗号替换所有选项卡重写原始文件,而不会导致任何锁定问题。然后重新加载原始的.csv文件。在重新加载时,Excel将始终将焦点设置在文本文件的第一个单元格上。因此,重新加载最后已知的活动单元可能值得恢复。

您可以在http://jaimonmathew.wordpress.com/2011/08/23/excel_addin_to_work_with_unicode_csv/上找到完整源代码的工作解决方案。

HTH

Jaimon