我知道这不是一个独特的问题,但我没有太多运气找到其他人如何解决这个问题的例子。我有一个内部网asp.net应用程序,我继承并正在构建。一个特定页面用于数据输入以提交批准声明,我们有一个表格,可以一次输入一条记录,并根据数据库实时验证有效的产品信息。
我被要求添加一个功能,用户可以同时导入大量记录,以节省他们每次浏览每个文本框和下拉列表的时间,有时会超过100条记录。
我作为我的第一个选择的解决方案是创建一个excel电子表格,他们可以从页面上的链接打开我已格式化为模板,他们可以将数据复制/粘贴到,保存然后上传到服务器并作为链接服务器对象导入到sql server中。
由于此解决方案的性质和导入的一些数据,我必须为电子表格编写一些错误处理到VB中,如果我发现要修复的错误,那么就没有好办法保证用户可以使用使用页面上的版本,而不是他们保存的一些本地副本,这些副本在尝试导入时可能会中断。
我排除了一个我试图解析的大文本框,因为我无法控制用户输入数据的方式。
我缺少哪些更好,可能更明显的解决方案?
答案 0 :(得分:1)
不受控制的电子表格导入过程是一件坏事。用户可以做太多事情来破坏这个过程。如果您要从电子表格批量加载,则该过程应包含以下组件:
受控模板文件, 由用户下载并生成 从应用程序(如果模板 不需要改变,它可以 只是住在某处的文件夹中。
检查以确保模板 已被使用。
实际加载过程。
用户可以验证的屏幕 他们导入,编辑和 提交上传。
检查和验证部分是对可以验证数据的上传设置控件的好方法。用户必须检查导入的数据并手动批准它。这将正确性的责任重新放在用户身上,并使他们能够查看和修复上传。
答案 1 :(得分:0)
将文件上传到您的网站解析文件在您的应用程序中,并使用与您的网站使用相同的逻辑(假设您使用域模型)创建您的声明。您可以上传CSV文件或您可以在服务器上解析的任何格式。
答案 2 :(得分:0)
也许这就是你的意思,但我不会使用电子表格来使用csv(逗号分隔值)文件。它仍然可以在Excel中打开和编辑,但也可以在其他编辑器中为没有Excel的用户轻松编辑。这也将使您在解析方面更容易。
如果您担心版本控制,也许您可以将其中一个列标题设置为仅包含当前版本的空列。
答案 3 :(得分:0)
您的答案假定Excel是一个更好的系统,用于输入和管理数据,而不是您在网站上生成的数据。但是,.NET中有很多可编辑的Datagrid选项可以模拟Excel的强大功能。
另一方面,如果您希望人们能够使用本地数据副本而无需连接到网络,您可能需要考虑在共享驱动器或用户文件夹中自动生成电子表格(一个每个用户的电子表格),使用其中一个数据访问系统绑定到数据库。
祝你好运!