基于Aspose.Cell的Excel导入与导出
2021/5/18 22:26:49
本文主要是介绍基于Aspose.Cell的Excel导入与导出,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Excel的导入导出以往都是使用Office提供的Excel Library(COM组件)实现的,此方法有三个缺点!
第一,运行环境必须装有指定版本的Excel
第二,运行环境中指定版本的Excel组件必须正常在操作系统中注册(使用COM组件是要注册的),也就是说,如果机器上虽然装了Excel,但是装的是阉割版、绿色版等奇怪的版本就不行了
第三,效率低下,常要注意GC,时常会因为操作不当造成开启一大堆Excel.exe进程占用过高系统资源(这些Excel.exe甚至不会随着你的应用程序的关闭而关闭)
所以我采取组件Aspose.Cells 5.3.0.1 此组件与Office套件脱离,也就是说,运行环境没有安装Excel的情况下也能正常运行。缺点就是这个是个收费组件 我现在使用的是破解版
导入Excel
/// <summary> /// 导入excel数据并显示 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnImportExcel_Click(object sender, EventArgs e) { try { OpenFileDialog openFileDialog = new OpenFileDialog(); if (openFileDialog.ShowDialog() == DialogResult.OK) { //清空表格控件 dgvExcel.Rows.Clear(); dgvExcel.Columns.Clear(); //工作簿 Workbook workbook = new Workbook(openFileDialog.FileName); //表格 Cells cells = workbook.Worksheets[0].Cells; //增加列数 for (int i = 0; i < cells.MaxDataColumn + 1; i++) { DataGridViewTextBoxColumn dataGridViewTextBoxColumn = new DataGridViewTextBoxColumn(); dgvExcel.Columns.Add(dataGridViewTextBoxColumn); } //增加行数 dgvExcel.Rows.Add(cells.MaxDataRow + 1); for (int i = 0; i < cells.MaxDataRow + 1; i++) { for (int j = 0; j < cells.MaxDataColumn + 1; j++) { //将数据写入表格控件中 dgvExcel.Rows[i].Cells[j].Value = cells[i, j].StringValue.Trim(); string s = cells[i, j].StringValue.Trim(); //一行行的读取数据,插入数据库的代码也可以在这里写 } } } } catch (Exception EX) { MessageBox.Show(EX.Message); } }
导出Excel
/// <summary> /// 导出数据到Excel /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnExportExcel_Click(object sender, EventArgs e) { try { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = "(表格文件).xls|xls"; saveFileDialog.DefaultExt = ".xls"; if (saveFileDialog.ShowDialog() == DialogResult.OK) { Workbook workbook = new Workbook(); //工作簿 Worksheet worksheet = workbook.Worksheets[0]; //工作表 Style style = workbook.Styles[workbook.Styles.Add()]; //新增样式 //文本设置 style.HorizontalAlignment = TextAlignmentType.Center; //文字左右居中 style.VerticalAlignment = TextAlignmentType.Center; //文字上下居中 style.Font.Color = Color.Red; //字体颜色 style.Font.Name = "宋体"; //文字字体 style.Font.Size = 12; //文字大小 style.Font.IsBold = true; //粗体 style.BackgroundColor = Color.Yellow; //背景颜色 //边框样式 style.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin; //左边框 style.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin; //右边框 style.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin; //上边框 style.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin; //下边框 //style.IsTextWrapped = true; //单元格内容自动换行 //worksheet.AutoFitColumns(); //自适应列表宽度 for (int i = 0; i < dgvExcel.Rows.Count; i++) { for (int j = 0; j < dgvExcel.Columns.Count; j++) { worksheet.Cells[i, j].SetStyle(style); //增加样式 worksheet.Cells.SetRowHeight(i, 20); //设置列高 worksheet.Cells.SetColumnWidth(i, 15); //设置行宽 worksheet.Cells[i, j].PutValue(dgvExcel.Rows[i].Cells[j].Value); } } //worksheet.Cells.Merge(1, 1, 1, 2);//合并单元格 1表示行号,2表示列号,3表示合并的行号,4表示合并的列数; workbook.Save(saveFileDialog.FileName); } } catch (Exception EX) { MessageBox.Show(EX.Message); } } }
源码已上传
这篇关于基于Aspose.Cell的Excel导入与导出的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-29易优CMS安装常见问题汇总-icode9专业技术文章分享
- 2024-06-28易优新手必读安装教程-icode9专业技术文章分享
- 2024-06-28忘记eyoucms后台密码怎么办?-icode9专业技术文章分享
- 2024-06-26终极指南:Scrum中如何设置需求优先级
- 2024-06-26AI大模型企业应用实战(25)-为Langchain Agent添加记忆功能
- 2024-06-26小白家庭 nas 搭建方案-icode9专业技术文章分享
- 2024-06-23AI大模型企业应用实战(14)-langchain的Embedding
- 2024-06-23AI大模型企业应用实战(15)-langchain核心组件
- 2024-06-23AI大模型企业应用实战(16)-langchain核心组件
- 2024-06-23AI 大模型企业应用实战(06)-初识LangChain