在Excel工作簿中保存自定义数据

时间:2010-11-19 15:38:46

标签: excel excel-2007

是否可以在Excel工作簿中保存大量数据(约1-2 mb)?

理想情况下,此数据应与工作簿中的工作表绑定 CustomProperties不太可能支持大数据。

我的数据可以通过以下形式呈现:binary,xml,string。

...谢谢

3 个答案:

答案 0 :(得分:0)

是的,您可以在Excel单元格中存储字符串和XML。对于二进制文件,你最好不要将它保存在Excel中,但如果你必须那么OLE(对象链接和嵌入)可以 是一个选择。您可以将二进制文件保存为Excel外部的文件,然后将其作为OLE对象插入:

Dim mySht As Worksheet
Dim oleFileName as String

oleFile = "MyXmlDoc.xml" 

Set mySht = ActiveWorkbook.ActiveSheet

mySht.Shapes.AddOLEObject Filename:=Environ$("Appdata") & _
     "\MyFolder\" & oleFile, _
         Link:=False, DisplayAsIcon:=True

对于某些类型的常见文件类型,它适用于我们。但我们从来没有为原始二进制数据做过。通常我们在电子表格中放置Word文档或PDF。您还可能存在可能损坏工作簿或丢失二进制数据的风险。在我们的例子中,OLE对象将由具有Wordperfect而不是Word的用户单击,或者他们运行Linux / Mac并且嵌入的文档无法打开。

它确实使您添加的每个嵌入对象的Excel文件变得相当大。这是一项古怪的技术。

答案 1 :(得分: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

答案 2 :(得分: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