Aspose.Cell 导出和导入Excel

.NET使用Aspose.Cells导入导出Excel文件

 

【摘要】

在.NET软件开发项目中,开发人员经常会碰到Excel导入导出的需求,而传统的使用Microsoft.Office.Interop 或者 Microsoft.ACE.OLEDB 都具有一些使用限制:

l  需要在服务器端装Excel或者Microsoft.ACE.OLEDB,且及时更新它,以防漏洞,还需要设定权限允许.NET访问COM+,如果在导出过程中出问题可能导致服务器宕机。

l  Excel会把只包含数字的列进行类型转换,本来是文本型的,Excel会将其转成数值型的,比如编号000123会变成123。

l  导出时,如果字段内容以“-”或“=”开头,Excel会把它当成公式进行,会报错。

l  Excel会根据Excel文件前8行分析数据类型,如果正好你前8行某一列只是数字,那它会认为该列为数值型,自动将该列转变成类似1.42702E+17格式,日期列变成包含日期和数字的。

本文将介绍Excel导入导出的另一种方法:Aspose.Cells,它能克服Microsoft.Office.Interop 或者 Microsoft.ACE.OLEDB的这些缺点

 

【正文】

使用Aspose.Cells

Aspose.Cells是比一个比较好用的第三方类库,使用它导入导出Excel不需要服务器安装Excel软件。

利用Aspose.Cells导入Excel

第一步:首先必须要下载Aspose.Cells.dll文件,然后在在项目中引用,不需安装。

第二步:在CS文件中添加引用。

using Aspose.Cells;

 

第三步:具体使用方法

l  将用户选择的Excel文件导入到DataTable对象中

if (!fileLoad.HasFile)

  {

      ShowMessage("请选择要导入的Excel文件");

      return;

  }

   string ex = fileLoad.FileName.Split('.').Last();

   if (ex != "xlsx" && ex != "xls")

      {

        ShowMessage("模板必须是Excel文件,请下载正确的模板");

              return;

      }

     Workbook workbook = new Workbook(fileLoad.FileContent);

  Worksheet worksheet = workbook.Worksheets[0];

  Cells cells = worksheet.Cells;

  DataTable dt;

  dt = cells.ExportDataTableAsString(0, 0, cells.MaxDataRow + 1, cells.MaxDataColumn + 1, true);

 

上面的代码是将用户选择的Excel文件的内容导入到DataTable,当然Aspose.Cells还提供将Excel的数据导入到GridView、DataView等等数据绑定控件并支持众多参数设置的方法。通过这些方法,开发人员可以非常灵活将Excel文件的数据导入。

l  将数据导出到Excel文件,并下载。

          Workbook workbook = new Workbook();

            Worksheet worksheet = workbook.Worksheets[0];

            Cells cells = worksheet.Cells;

            DataTable dt = service.GetAllConsumeByFilter(txtFilterMobile.Text,

                txtFilterMobile.Text, txtBeginDate.Text, txtEndDate.Text);

            dt.Columns.Remove("ID");

            cells.ImportDataTable(dt, true, "a1");

            workbook.Save(HttpContext.Current.Response, HttpUtility.UrlEncode("消费列表.xlsx", System.Text.Encoding.UTF8), ContentDisposition.Attachment,new OoxmlSaveOptions(SaveFormat.Xlsx));

导出Excel的方法也很简单,上面的代码作用是将DataTable对象的数据导出到Excel文件,并提供用户下载,Aspose.Cells也提供了多种导出Excel方法,开发人员可以使用Aspose.Cells将DataView、GridView等等数据控件的数据导出到Excel.

        

l  Aspose.Cells 对单元格进行操作

   string path = HttpContext.Current.Server.MapPath("~");

            path = path.Substring(0, path.LastIndexOf("\\"));

            path += @"\HelloWorld.xlsx";

            Workbook workbook = new Workbook(path);

            Worksheet worksheet = workbook.Worksheets[0];

            Cells cells = worksheet.Cells;

            cells["A1"].PutValue("Cell Value");

            style.Font.IsBold = true;

            cells["A1"].SetStyle(style);

            cells[0, 1].PutValue("Cell Value Type");

                switch (cells[A, 0].Type)

                {

                    case CellValueType.IsBool:

                        cells[A, 1].PutValue("IsBool");

                        break;

                    case CellValueType.IsDateTime:

                        cells[A, 1].PutValue("IsDateTime");

                        break;

                    case CellValueType.IsNull:

                        cells[A, 1].PutValue("IsNull");

                        break;

                    case CellValueType.IsNumeric:

                        cells[A, 1].PutValue("IsNumeric");

                        break;

                    case CellValueType.IsString:

                        cells[A, 1].PutValue("IsString");

                        break;

                    case CellValueType.IsUnknown:

                        cells[i, 1].PutValue("IsUnknown");

                        break;

            }

                    

         上面的代码是对单元格进行赋值、设置样式、检查单元格数据类型,可以说Aspose.Cells的使用是非常灵活和简单的。

posted @ 2015-09-22 09:54  MeckYSJ  阅读(1247)  评论(0编辑  收藏  举报