2010-11-19 128 views
4

是否可以在Excel工作簿中保存大量數據(大約1-2 mb)?將自定義數據保存在Excel工作簿中

理想情況下,此數據應與工作簿中的工作表綁定。
CustomProperties不太可能支持大數據。

我的數據可以以下列形式呈現:binary,xml,string。

謝謝...

+0

Excel中的單元格支持很好的文本,公式和數字。爲什麼你想用Excel來存儲二進制數據?在Excel裏面使用它會很困難... – 2010-11-19 16:20:06

回答

0

是的,你可以在Excel單元格中存儲字符串和XML。對於二進制,你最好不要將它保存在Excel中,但如果你不得不這樣做,那麼OLE(對象鏈接和嵌入)可能是一個選項。你可以通過保存爲二進制的Excel之外的文件,然後將它作爲一個OLE對象這樣做:

​​

它好工作爲我們的某些類型的文件類型常見的。但我們從來沒有做過原始二進制數據。通常我們會在電子表格中放入Word文檔或PDF。您還有可能破壞工作簿或丟失二進制數據的風險。在我們的例子中,OLE對象將被具有Wordperfect而不是Word的用戶點擊,或者他們運行Linux/Mac並且嵌入式文檔無法打開。

它確實使Excel文件變得相當大,每增加一個嵌入對象。這是一個古怪的技術。

0

您可以將VBA模塊添加到您的數據的工作簿中,並使用正常的ASCII字符串(例如,使用Base64編碼)對數據進行編碼。生成的代碼是這樣的:

Dim x(1000) As String 
Sub InitData() 
    x(0) = "abcdefghijk...." 
    x(1) = "123456789......" 
    '...' 


End Sub 

您也可以將這些字符串存儲在一個表,而不是VBA模塊,行由行,如果你喜歡這一點。

爲了完成編碼/解碼,看這裏:

How do I base64 encode a string efficiently using Excel VBA?

Base64 Encode String in VBScript

http://www.source-code.biz/snippets/vbasic/12.htm

+0

不錯的解決方案。值得一提的是,在vb模塊中存儲數據被VBA編譯器限制爲幾千字節的數據,而存儲到表單則支持兆字節而沒有問題。每個單元存儲更多的數據,將電子表格保存到磁盤所需的時間更少。每個細胞4 kb對我來說工作正常。 Base64不會產生比十六進制小的文件,實現起來更簡單。我想這是由於壓縮工作表。 – Pierre 2014-12-07 14:15:41

0

如果你的信息都在文件中,你可以讀取二進制模式的文件,並把它在一個單元格中。然後在最後或開始時您將保存您的文件名,以便您可以輕鬆重建文件。 這裏有一些代碼供你開始:

Sub readBin() 
    Dim iFreeFile As Integer, bTemporary As Byte 
    iFreeFile = FreeFile 
    Open "\temp.bin" For Binary Access Read As iFreeFile 
    Do While Not EOF(intFileNum) 
     Get iFreeFile, , bTemporary //read byte from file 
     Cells(1, 1) = bTemporary //save in cell 
    Loop 
    Close iFreeFile 
End Sub 
相關問題