首页 新闻 会员 周边

动态导入Excel列之后展示数据(豆子不多了,不好意思)

0
悬赏园豆:5 [已解决问题] 解决于 2023-08-24 17:16

Asp.Net Core动态导入Excel数据(每个Excel列不一样),例如Excel_1文件是10列,Excel_2列文件是16列。动态导入后,数据库表如何设计方便读取?比如我有一个配方Excel(里面有A到C3列数据,也有可能是10列数据)。导入后还需要动态查询出这些列展示在网页上,求表结构及展示算法。我初步设计表结构如下:

最终页面展示效果如下:

Assur的主页 Assur | 初学一级 | 园豆:6
提问于:2023-08-01 11:43
< >
分享
最佳答案
0

对于动态导入Excel数据,并展示在网页上的需求,可以考虑以下数据库表结构设计和展示算法:

数据库表结构设计:

  1. ExcelFile 表:用于存储导入的Excel文件的信息,包括文件名称、路径、导入时间等。

    • FileId (主键)
    • FileName (文件名称)
    • FilePath (文件路径)
    • ImportTime (导入时间)
  2. ExcelColumn 表:用于存储Excel文件的列信息,包括列名称和排序。

    • ColumnId (主键)
    • FileId (外键,关联 ExcelFile 表的 FileId 字段)
    • ColumnName (列名称)
    • SortOrder (列的排序)
  3. ExcelData 表:用于存储导入的Excel数据,每一行对应一个记录。

    • DataId (主键)
    • FileId (外键,关联 ExcelFile 表的 FileId 字段)
    • ColumnId (外键,关联 ExcelColumn 表的 ColumnId 字段)
    • RowIndex (行索引,记录在Excel中的行号)
    • CellValue (单元格值)

展示算法:

  1. 用户上传Excel文件,并将文件信息保存到 ExcelFile 表中,获取对应的 FileId。
  2. 解析Excel文件,获取所有列名称和排序,并将列信息保存到 ExcelColumn 表中,关联到对应的 FileId。
  3. 读取每个单元格的值,并将每个单元格的数据保存到 ExcelData 表中,关联到对应的 FileId 和 ColumnId。
  4. 根据用户的需求,查询 ExcelColumn 表获取所有的列名称和排序,根据排序重新排列列的顺序。
  5. 根据查询到的列名称,在 ExcelData 表中按照行索引进行排序,获取数据记录。
  6. 将数据记录展示在网页上,可以根据需要进行格式化和分页等操作。

需要注意的是,动态导入Excel数据需要考虑数据的有效性、一致性和数据类型的处理。还应该进行数据验证和异常处理,以确保数据的完整性和准确性。

收获园豆:5
lanedm | 老鸟四级 |园豆:2381 | 2023-08-01 14:23

谢谢,详细明了

Assur | 园豆:6 (初学一级) | 2023-08-01 17:19
其他回答(2)
0

数据库设计二楼说的也差不多了。

我这里探讨一下动态展示的问题。

可以参考

ExtJs懒人笔记(3) 动态Grid的实现

智客工坊 | 园豆:1858 (小虾三级) | 2023-08-01 17:05

谢谢

支持(0) 反对(0) Assur | 园豆:6 (初学一级) | 2023-08-01 18:07
0

没问题,我理解你的需求。为了实现动态导入不同结构的Excel数据并能方便读取和展示,你可以考虑使用一个包含动态列的数据库表。在这里,我将提供一个基本的表结构和展示算法的思路供你参考。

数据库表结构:
假设你有一个名为"RecipeData"的数据库表,它将用于存储不同结构的Excel数据。为了适应不同列数的情况,你可以设计如下的表结构:

sql
Copy code
CREATE TABLE RecipeData (
Id INT PRIMARY KEY IDENTITY(1,1),
RecipeName NVARCHAR(100) NOT NULL,
Column1 NVARCHAR(100),
Column2 NVARCHAR(100),
Column3 NVARCHAR(100),
-- ...
ColumnN NVARCHAR(100)
);
这里,我们假设每个列都是NVARCHAR类型,以容纳各种类型的数据。你可以根据实际需求将数据类型更改为适合你的数据类型。

导入Excel数据:
在导入Excel数据时,你可以使用第三方库(例如EPPlus或NPOI)来读取Excel文件的内容并将其保存到数据库中。读取Excel时,你需要动态地确定有多少列,并将数据插入相应的数据库表列中。

展示算法:
展示数据时,你需要根据用户选择的配方(Excel文件)动态地查询数据库表,并根据动态列展示数据。下面是一种简单的展示算法思路:

用户选择配方:你可以在网页上提供一个下拉列表或其他方式,让用户选择导入的配方(Excel文件)。

根据用户选择查询数据库:当用户选择了某个配方后,根据配方名称或唯一标识,查询数据库表"RecipeData"的数据。

动态展示数据:获取查询结果后,你可以动态地根据查询出的数据列数,展示表格或其他形式的数据展示在网页上。你可以在网页上使用JavaScript或其他前端技术动态生成表格,以适应不同列数的情况。

表格生成示例(使用HTML和JavaScript):

html
Copy code
<!-- 假设有一个id为"recipeTable"的表格容器 -->
<table id="recipeTable">
<thead>
<tr>
<th>列1</th>
<th>列2</th>
<!-- ... 根据查询的列数动态生成表头 -->
</tr>
</thead>
<tbody>
<!-- 使用JavaScript动态生成表格行和单元格 -->
</tbody>
</table>
通过以上算法,你可以动态导入不同结构的Excel数据,并能方便地在网页上展示这些数据。你需要根据具体的业务需求,进一步优化和调整展示算法。如果数据量很大,还可以考虑分页显示等优化方式。

Technologyforgood | 园豆:5718 (大侠五级) | 2023-08-01 19:56

谢谢

支持(0) 反对(0) Assur | 园豆:6 (初学一级) | 2023-08-05 14:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册