如何将Excel(XML)文件加载/存储到SQL Server表中(保留所有值,格式,属性,公式等)?

时间:2011-11-22 22:27:59

标签: sql xml excel

请原谅我,如果我的问题太基本,但我一直在寻找一个我还没有找到的答案,尽管我已经让人们给我一些拼图。我想在SQL Server表中加载和存储Excel文件,使用存储过程填充一些单元格,并在需要时将它们导出回Excel文件。

由于最新版本的Excel将数据存储为XML和SQL Server可以读取/处理XML,我认为我想做的事情是可能的,但我还不清楚如何做到这一点。

2 个答案:

答案 0 :(得分:0)

你最好的选择是启动一个Excel对象,吸入电子表格文件,然后逐个访问单元格,确定单元格值/格式等。这有一些缺点,即你需要安装Excel (在服务器上不太好),破解坚果是一个很大的锤子。

另一种选择是使用Excel数据库驱动程序来读取电子表格,就像它是数据库表一样。这样做的一大缺点是,虽然它看起来非常有用,但它对电子表格中列的数据类型做了一些大的假设。例如,如果您的行中A列中的值是日期,则导入的表将具有DateTime的列数据类型。如果在说了50行之后,你有一些不能成为日期的东西,例如“N / A”,那么你的数据表将为那些单元获取空值(因为驱动程序已经确定列A看起来像日期,所以任何不是日期的东西都将变为空)。你没有得到任何警告。

在原始帖子的评论中提到的另一个选项是“阅读电子表格中的XML”。嗯,这很好用,但假设a)Excel文件是XML格式的一个(旧文件不会是)和b)你很乐意解析可能改变格式的XML。你可以做的比看OpenXML的东西更糟糕的是如何从XML格式读取电子表格文件,但如果你必须处理xls文件以及(除了xlsx文件),你最好的选择是可能会激活一个Excel对象并使用它。

答案 1 :(得分:0)

如果在将文件加载到数据库后不需要使用该文件,则可以将整个文件存储在BLOB字段中。它将保留您建议的所有格式和值,并将处理当前和以前版本的Excel(使XML格式成为非问题)。

以下是MS.com上可能对此appraoch有所帮助的文章:http://support.microsoft.com/kb/326502

现在,如果您需要在数据库中保存文档后修改值,则需要执行更像@ross Watson上述内容的操作。