700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C# Excel导入与导出

C# Excel导入与导出

时间:2020-07-05 15:51:34

相关推荐

C# Excel导入与导出

Excel的结构

1、Workbook工作簿(也就是文件)

2、Sheet(也就是一个表)

3、Row(也就是一个数据行)

4、Cell(单元格)

5、Value(单元格中具体的值)

字符串

数字

日期

布尔

特殊值:公式

Excel导入、导出

Excel的结构

1、Workbook工作簿(也就是文件)

2、Sheet(也就是一个表)

3、Row(也就是一个数据行)

4、Cell(单元格)

5、Value(单元格中具体的值)

字符串

数字

日期

布尔

特殊值:公式

导入

思路

1、要把文件加载到程序中

2、获取sheet

3、获取所有行

4、获取行中所有的数据

5、将获取到的数据,按照原有的数据格式,存储到一个数据容器中

实现(NPOI)

1、选择Excel文件

2、创建一个工作簿(IWrokbook) 接收Excel

子主题 1

3、获取ISheet

4、获取行(IRow)

行分为2种类型:标题行、数据行

sheet.FirstRowNum第一行的行号

sheet.LastRowNum最后一行的行号

5、获取单元格(ICell)

6、根据单元格的类型,获取单元格的值

导出

导入

思路

1、要把文件加载到程序中

2、获取sheet

3、获取所有行

4、获取行中所有的数据

5、将获取到的数据,按照原有的数据格式,存储到一个数据容器中

实现(NPOI)

1、选择Excel文件

2、创建一个工作簿(IWrokbook) 接收Excel

3、获取ISheet

4、获取行(IRow)

行分为2种类型:标题行、数据行

sheet.FirstRowNum第一行的行号

sheet.LastRowNum最后一行的行号

5、获取单元格(ICell)

6、根据单元格的类型,获取单元格的值

1 private void button1_Click(object sender, EventArgs e) 2 { 3 //1、要把文件加载到程序中 4 //2、获取sheet 5 //3、获取所有行 6 //4、获取行中所有的数据 7 //5、将获取到的数据,按照原有的数据格式,存储到一个数据容器中 8 9 10 OpenFileDialog ofd = new OpenFileDialog(); 11 ofd.Filter = "Excel(*.xlsx)|*.xlsx"; 12 if (ofd.ShowDialog() != DialogResult.OK) 13 { 14 return; 15 } 16 //创建一个数据表,用来存储 从Excel中导入的数据 17 DataTable dt = new DataTable(); 18 19 //得到Excel文件地址 是包含路径的fileName 20 string excelFilePath = ofd.FileName; 21 //创建一个工作簿 版本及以上 使用XSSFWorkbook ,以前的版本 使用 使用HSSFWorkbook 22 IWorkbook workbook = new XSSFWorkbook(excelFilePath); 23 //创建一个sheet ,用来存储Excel中的一个Sheet 24 //ISheet sheet = workbook.GetSheet("Sheet1");//根据sheet的名字获取 25 ISheet sheet = workbook.GetSheetAt(0);//根据sheet的索引,索引从0开始 26 //创建一个Row 存储第一行有效数据,通常 有可能是标题行 27 IRow row = sheet.GetRow(sheet.FirstRowNum); 28 //处理标题行, 遍历标题行中所有的单元格(Cell),每个单元格的值 即为列名 29 foreach (ICell item in row.Cells) 30 { 31 //往DataTable中添加Excel中对应的列的值 32 object cellValue = this.GetCellValueByType(item); 33 string columnName = "";//DataTable的列明 34 if (cellValue == null || cellValue.ToString() =="") 35 { 36 columnName = "column" + dt.Columns.Count;//默认名 37 } 38 else 39 { 40 columnName = cellValue.ToString();//具体值单元格值 作为名字 41 } 42 dt.Columns.Add(columnName); 43 } 44 //遍历所有的有效数据 并将有效数据 添加到DataTable 45 for (int i = sheet.FirstRowNum+1; i <= sheet.LastRowNum; i++) 46 { 47 IRow dataRow = sheet.GetRow(i); 48 DataRow dr = dt.NewRow();// 创建与dt表具有相同架构的新数据行(Row) 49 for (int j = 0; j < dataRow.Cells.Count; j++) 50 { 51 dr[j] = this.GetCellValueByType( dataRow.Cells[j]); 52 } 53 dt.Rows.Add(dr);//向dt数据表中添加一个数据行 54 } 55 //将导入的数据表 绑定到dataGridView1 56 dataGridView1.DataSource = dt; 57 } 58 59 public object GetCellValueByType(ICell cell) 60 { 61 62 switch (cell.CellType) 63 { 64 case CellType.Blank: 65 return ""; 66 case CellType.Boolean: 67 return cell.BooleanCellValue; 68 case CellType.Error: 69 return cell.ErrorCellValue; 70 case CellType.Formula: 71 return cell.CellFormula; 72 case CellType.Numeric: 73 return cell.NumericCellValue; 74 case CellType.String: 75 return cell.StringCellValue; 76 case CellType.Unknown: 77 return null; 78 default: 79 return ""; 80 } 81 } 82 83 private void button2_Click(object sender, EventArgs e) 84 { 85 SaveFileDialog sfd = new SaveFileDialog(); 86 sfd.Filter = "Excel(*.xlsx)|*.xlsx"; 87 if (sfd.ShowDialog() != DialogResult.OK) 88 { 89 return; 90 } 91 string excelFileSavePath = sfd.FileName; 92 DataTable dt = new DataTable(); 93 dt.Columns.Add("姓名"); 94 dt.Columns.Add("性别"); 95 dt.Columns.Add("年龄"); 96 #region 给DataTable 添加模拟数据 97 DataRow dr = dt.NewRow(); 98 dr["姓名"] = "张三1"; 99 dr["性别"] = "男";100 dr["年龄"] = "21";101 dt.Rows.Add(dr);102 dr = dt.NewRow();103 dr["姓名"] = "张三2";104 dr["性别"] = "男";105 dr["年龄"] = "22";106 dt.Rows.Add(dr);107 dr = dt.NewRow();108 dr["姓名"] = "张三3";109 dr["性别"] = "男";110 dr["年龄"] = "23";111 dt.Rows.Add(dr);112 #endregion113 IWorkbook wordbook = new XSSFWorkbook();114 ISheet sheet = wordbook.CreateSheet("Sheet1");115 IRow row = sheet.CreateRow(0);116 row.CreateCell(0).SetCellValue("姓名");117 row.CreateCell(1).SetCellValue("性别");118 row.CreateCell(2).SetCellValue("年龄");119 for (int i = 0; i < dt.Rows.Count; i++)120 {121 row = sheet.CreateRow(i+1);122 row.CreateCell(0).SetCellValue(dt.Rows[i]["姓名"].ToString());123 row.CreateCell(1).SetCellValue(dt.Rows[i]["性别"].ToString());124 row.CreateCell(2).SetCellValue(Convert.ToInt32(dt.Rows[i]["年龄"]));125 }126 using (FileStream fs = new FileStream(excelFileSavePath, FileMode.Create, FileAccess.Write))127 {128 wordbook.Write(fs);129 }130 MessageBox.Show("导出完成");131 }132}133public class Student {134 public int ID { get; set; }135 public string Name { get; set; }136}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。