gpt4 book ai didi

sql - 如何解析存储在 MS SQL 2005 中的 varbinary 中的 excel (.xls) 文件?

转载 作者:行者123 更新时间:2023-12-04 00:12:23 26 4
gpt4 key购买 nike

问题

如何最好地解析/访问/提取作为二进制数据存储在 SQL 2005 字段中的“excel 文件”数据?

(所以所有数据最终都可以存储在其他表的其他字段中。)

背景

基本上,我们的客户需要来自其用户的大量详细数据。不幸的是,我们的客户不能要求他们的用户进行任何类型的数据库导出。所以我们的客户必须为他们的用户提供某种 UI 来输入数据。我们的客户认为所有用户都可以接受的 UI 非常出色,因为它具有相当强大的 UI。所以考虑到所有这些,我们的客户需要自动解析这些数据并将其存储在他们的数据库中。

我们试图让我们的客户相信用户只会执行一次此操作,然后坚持使用数据库导出!但客户不能要求 db 导出他们的用户。

  • 我们的客户要求我们解析一个 excel 文件
  • 客户的用户使用 excel 作为输入所有必需数据的“最佳”用户界面
  • 为用户提供了必须填写的空白 Excel 模板
    • 这些模板有固定数量的唯一命名标签
    • 这些模板有许多必须完成的固定区域(单元格)
    • 这些模板还有一些区域,用户可以在其中插入多达数千个格式相同的行
  • 完成后,用户通过标准 html 文件上传方式提交 excel 文件
  • 我们的客户将此文件原始存储到他们的 SQL 数据库中

给定

  • 一个标准的 excel (".xls") 文件(原生格式,不是逗号或制表符分隔)
  • 文件原始存储在 varbinary(max) SQL 2005 字段中
  • excel 文件数据在行之间不一定是“统一的”——也就是说,我们不能只假设一列都是相同的数据类型(例如,可能存在行标题、列标题、空单元格、不同的“格式”,...)

要求

  • 完全在 SQL 2005 中编写代码(存储过程、SSIS?)
  • 能够访问任何工作表(选项卡)上的值
  • 能够访问任何单元格中的值(无需公式数据或取消引用)
  • 不能假定单元格值在行之间是“一致的”——也就是说,我们不能只假定一列都是相同的数据类型(例如,可能存在行标题、列标题、空单元格、公式, 不同的“格式”, ...)

偏好

  • 无文件系统访问权限(无写入临时 .xls 文件)
  • 以定义的格式检索值(例如,实际日期值,而不是像 39876 这样的原始数字)

最佳答案

我的想法是,任何事情都可以做,但要付出代价。在这种特殊情况下,价格似乎太高了。

我没有经过测试的解决方案,但我可以分享我如何第一次尝试解决此类问题。

我的第一种方法是在 SqlServer 机器上安装 excel 并编写一些程序集以使用 excel API 使用行上的文件,然后将它们作为程序集加载到 Sql server 上。

正如我所说,这只是一个想法,我没有细节,但我相信这里的其他人可以补充或批评我的想法。

但我真正的建议是重新考虑整个项目。读取存储在数据库表格行的单元格中的二进制文件的表格数据是没有意义的。

关于sql - 如何解析存储在 MS SQL 2005 中的 varbinary 中的 excel (.xls) 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/79592/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com