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的使用是非常灵活和简单的。