2011-03-07 73 views
0

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

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

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

VSTO加载项里面有什么办法可以告诉Excel关闭文件吗?

+0

会出现这种情况只是当你保存UNICODE编码? – 2011-03-07 15:24:19

回答

0

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

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

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

HTH

Jaimon

+0

谢谢你的回答Jaimon。我通过使用类似于您所做的“另存为临时Unicode文件”的方法克服了这个问题。看来这是唯一的解决方案。 – Demir 2011-09-07 12:00:20