最近開發一個工具,需要填寫excel,研究接口後決定使用.net調用excel com組件的以二維數組(string[,])寫的方法一次性寫一個sheet,開發一切順利,進程不能關閉問題也順利解決,但是最後測試時發現一個問題始終無法解決,肯定重現,就是當需要寫入某個cell中的字符數過多時,會捕捉到異常,檢查程序其他地方並觀察二維數據數據均無問題後,懷疑是excel com組件的問題(參數buffer設置不夠,o(∩_∩)o...哈哈)。
後經過反覆測試,證明當字符數達到一定大小時就出錯,其餘情況均無問題。雖然後來採取其他方式規避,插入文本附件,但是還是在microsoft網站找到了問題描述,呵呵,但是偶的報錯缺不是 1004 啊(白查了半天msdn,提醒什麼時區錯誤),寒。。。後來看到這篇文章後,不經感慨。。原來官方預警文檔中也有“可能會收到類似於以下內容的錯誤消息:”這樣的語句。。。再寒。。。
原文地址:
http://support.microsoft.com/kb/213841/zh-cn?spid=2512&sid=251
在 Excel 區域中插入大型數組字符串時出現“Run-time Error 1004”(運行時錯誤 1004)
文章編號 | : | 818808 |
最後修改 | : | 2003年11月26日 |
修訂 | : | 1.1 |
症狀
在 Office Excel 2003 中,當您以編程方式用包含大型字符串的數組設置某個區域值時,可能會收到類似於以下內容的錯誤消息:
Run-time error '1004'.
Application-defined or operation-defined error.
Application-defined or operation-defined error.
原因
如果數組(單元格區域)中有一個或多個單元格所包含的字符串被設置爲包含 911 個以上的字符,就可能會發生此問題。
替代方法
要避免此問題,請編輯腳本,以便數組中的單元格所包含的字符串都不會包含 911 個以上的字符。
例如,下面的示例代碼塊中的以下代碼行定義了一個包含 912 個字符的字符串:
例如,下面的示例代碼塊中的以下代碼行定義了一個包含 912 個字符的字符串:
Sub XLTest()
Dim aValues(4)
aValues(0) = "Test1"
aValues(1) = "Test2"
aValues(2) = "Test3"
MsgBox "First the Good range set."
aValues(3) = String(911, 65)
Range("A1:D1").Value = aValues
MsgBox "Now the bad range set."
aValues(3) = String(912, 66)
Range("A2:D2").Value = aValues
End Sub
更多信息
字符串是一系列以組的形式進行操縱的字符。字符串的長度通常是它所包含的字符的數量,或者其長度是預先定義的(如同本示例中一樣)。