我要做的是导入并读取。
要引用Aspose.Cells.dll
引用 using Aspose.Cells;
(视图。)
(要导入的文件)
代码一(按钮事件):
private void button2_Click(object sender, EventArgs e) //按钮事件 { OpenFileDialog frm = new OpenFileDialog(); frm.Filter = "Excel文件(*.xls,xlsx)|*.xls;*.xlsx"; if (frm.ShowDialog() == DialogResult.OK) { string excelName = frm.FileName; Workbook excel = new Workbook(excelName); //拿到url List<EntityModel> importyString = GetImportExcelRoute(excel); //读取文件 } }
代码二(读取表格内容)
//循环遍历获取excel的中每行每列的值 public List<EntityModel> GetImportExcelRoute(Workbook excel) { int icount = excel.Worksheets.Count; //总条数 List<EntityModel> routList = new List<EntityModel>(); //声明一个实体(自己写,不配图了),装获取的数据 for (int i = 0; i < icount; i++) { Worksheet sheet = excel.Worksheets[i]; Cells cells = sheet.Cells; int rowcount = cells.MaxRow; //行数 int columncount = cells.MaxColumn; //列数 if (rowcount > 0 && columncount > 0) { TableName = cells[0, 0].StringValue.Trim(); //列名 (因为我导入的文件是固定格式的。所以取固定值可以拿到列名) for (int e = 2; e < rowcount; e++) //循环行 (因为表格,前两列,是表名和列名。所以计数e从第二行开始循环) { EntityModel entityModel = new EntityModel(); for (int c = 0; c <= 4; c++) //循环4列(也是因为表格固定,才循环c列为4列) { switch (c) { case 0: entityModel.Name = cells[e, c].StringValue.Trim(); break; //获取姓名 case 1: entityModel.Type = cells[e, c].StringValue.Trim(); break; //获取类型 case 2: entityModel.IsEmpty = cells[e, c].StringValue.Trim(); break; //获取是否为空 case 3: entityModel.Instructions = cells[e, c].StringValue.Trim(); break;//获取说明 } } routList.Add(entityModel); //添加 } } } return routList; }
注:因为没有做其他判断,所以表格合并能不能求出值,还有表格原来自带颜色能不能用 。都没测试过...