2011-03-07 74 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