基于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导入与导出
源码已上传

上一篇:c#使用Aspose打印文件


下一篇:Aspose.Words 使用根据模板中标记生产新word(一)