Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net VSTO Excel另存为Unicode文本并转换为CSV_.net_Vsto_Excel 2007 - Fatal编程技术网

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

.net VSTO Excel另存为Unicode文本并转换为CSV,.net,vsto,excel-2007,.net,Vsto,Excel 2007,我想使用Excel将我的CSV文件保存为unicode。我的CSV文件中有一些非ASCII字符。我在VSTO外接程序应用程序中使用SaveAs方法。据我所知,在SaveAs方法中选择文件格式为CSV并生成Unicode文件是不可能的 经过多次搜索,我得出结论,使用SaveAs方法获取Unicode文件的唯一方法是选择Unicode文本作为文件格式。但是,这会产生unicode文件标签 所以我决定将文件保存为unicode文本制表符分隔,然后读取文件并用逗号替换所有制表符以生成CSV文件。但这带来

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

经过多次搜索,我得出结论,使用SaveAs方法获取Unicode文件的唯一方法是选择Unicode文本作为文件格式。但是,这会产生unicode文件标签

所以我决定将文件保存为unicode文本制表符分隔,然后读取文件并用逗号替换所有制表符以生成CSV文件。但这带来了另一个问题:文件仍然由excel打开,并且文件错误被另一个进程使用。我试图在加载项的ShutDown事件、工作簿的foreclose事件和VSTO应用程序的Disposed事件之前修改该文件,但都不起作用


VSTO插件中是否有任何方法可以告诉Excel关闭文件?

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

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

您可以在上找到一个具有完整源代码的工作解决方案


Jaimon

这是在您使用UNICODE编码保存时发生的吗?谢谢您的回答Jaimon。我通过使用与您所做的类似的另存为临时Unicode文件的方法克服了这个问题。看来这是唯一的解决办法。