我开发了一个Access数据库解决方案,它使用Excel自动化打开xls和xlsx文件,这样我就可以导入我需要的特定单元格。
现在我必须将我的软件部署到没有安装Office或Excel的用户,并且正在使用Runtime运行我的程序,我不能再使用自动化了。
有没有办法可以在没有Excel的情况下打开Excel文件,导入可以说是单元格B7和单元格E4?我不需要直接在表中导入它,而是在内存中使用xls的结果(就像我使用Excel对象一样)并稍后保存。
提前致谢。
答案 0 :(得分:1)
由于某些(非常严重的)限制,可以使用Jet(即Access数据库引擎,其老化版本是标准Windows组件)来至少读取XLS文件。有关限制,请参见此处:
http://support.microsoft.com/kb/257819/en-gb
至于一个例子......
Function ReadCell(XLSFileName As String, SheetName As String, CellName As String)
Dim DB As DAO.Database, RS As DAO.Recordset
Set DB = DBEngine.OpenDatabase(XLSFileName, False, True, "Excel 8.0;HDR=No;")
Set RS = DB.OpenRecordset("SELECT * FROM [" + SheetName + "$" + CellName + ":" + CellName "]")
ReadCell = RS(0)
RS.Close
DB.Close
End Function
Sub Foo
MsgBox ReadCell("C:\Users\ExeBat\Documents\Test.xls", "Summary Details", "C5")
End Sub
答案 1 :(得分:0)
我的猜测并非没有某种第三方库。如果文件存储为office open XML,你可能会将文件读作文本,我猜是MS默认加密/混淆你的标准xls / xlsx文件,所以你不能这样做。如果在所有情况下您的用户计算机上都没有Excel,您可能需要考虑使用其他格式(text,csv等)的源数据,我知道这可能不是一个理想的答案。