2010-11-19 134 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 
相关问题