我怎样才能加载/存储Excel(XML)文件到SQL Server表(保留所有的值,格式,属性,公式等)?

请原谅我,如果我的问题太初级了,但我一直在寻找一个我还没有find的答案,尽pipe我已经让人们知道了这个难题。 我想加载和存储SQL Server表中的Excel文件,使用存储过程填充一些单元格,并在需要时将其导出回Excel文件。

由于最近版本的Excel将数据存储为XML和SQL Server可以读取/处理XML,我认为我想要做的事情是可能的,但是我不知道如何去做。

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

这里是MS.com上的一篇文章,可能有助于这个appraoch: http : //support.microsoft.com/kb/326502

现在,如果您在数据库中保存文档后需要修改这些值,则需要执行类似上面的@ross Watson所描述的操作。

你最好的办法是启动一个Excel对象,吸入电子表格文件,然后逐个访问单元格,确定单元格的值/格式等。这有两个缺点,即你需要安装Excel (不太好一个服务器) ,这是一个大锤子打破螺母。

另一个select是使用Excel数据库驱动程序来读取电子表格,就像它是一个数据库表一样。 其中一个很大的缺点是,虽然它看起来相当有用,但它对电子表格中列的数据types做了一些大的假设。 例如,如果列A中的值是date,那么导入的表将具有DateTime的列数据types。 如果在说50行左右之后,你有一些不能是date的东西,例如“N / A”,那么你的数据表就会得到这些单元格的空值(因为驱动程序已经决定列A看起来像date,所以任何不是date的东西都将变为空) 。 你没有得到这个警告。

另一个选项,就像你在原始文章中提到的那样,是“在电子表格中阅读XML”。 那么,这工作正常,但假设a)Excel文件是一种XML格式(哪些旧文件不会)和b)你很乐意parsing可能会改变格式的XML。 你可能会比看OpenXML的东西更糟糕的是如何从XML格式读取电子表格文件,但如果你还必须处理xls文件(除了xlsx文件) ,最好的办法可能是启动一个Excel对象并使用它。