C# Excel 读取导入数据库

使用Aspose.Cells组件。

表格第一行为表头合并,第二行为数据名称,从第三行开始数据。

复制代码
   if (xtraOpenFileDialog1.ShowDialog() == DialogResult.OK)
            {
                if (propertyDatas != null)
                {
                    propertyDatas.Clear();
                }
                Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook(xtraOpenFileDialog1.FileName);
                var worksheets = workbook.Worksheets;
                propertyDatas = new List<PropertyData>();
                foreach (var sheet in worksheets)
                {
                    List<string> list = new List<string>();
                    List<string> group = new List<string>();

                    Dictionary<string, string> DGroup_Name = new Dictionary<string, string>();

                    for (int i = 0; i <= sheet.Cells.MaxDataColumn; i++)
                    {
                        list.Add(sheet.Cells[1, i].StringValue);

                        if(sheet.Cells[0, i].IsMerged)
                        {
                            var range=    sheet.Cells[0, i].GetMergedRange();
                            group.Add(sheet.Cells[range.FirstRow, range.FirstColumn].StringValue);
                        }
                        else
                        {
                            group.Add(sheet.Cells[0, i].StringValue);
                        }
                    
                    }
                
                    // Excel 的第一行 为标题行,第一列为模型编号列
                    for (int j = 2; j <= sheet.Cells.MaxDataRow; j++)
                    {
                        for (int i = 0; i <= sheet.Cells.MaxDataColumn; i++)
                        {
                            PropertyData property = new PropertyData();
                            property.ModelCode = sheet.Cells[j, 0].StringValue;
                            property.Name = list[i];
                            if (sheet.Cells[j, i].Type == CellValueType.IsNull)
                            {
                                property.Value = "";
                            }
                            else
                            {
                                property.Value = sheet.Cells[j, i].StringValue;
                            }

                            property.GroupName = group[i];
                            //添加到集合中
                            propertyDatas.Add(property);
                        }
                       
                    }
                }
                gridControl1.DataSource = null;
                gridControl1.DataSource = propertyDatas;
                simpleButton2.Enabled = true;
            }
复制代码

posted @   在 水 一 方  阅读(1188)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2014-11-25 Navisworks 2014 Api 简单的使用
点击右上角即可分享
微信分享提示