aspose.Cells使用方法
1、创建Workbook,aspose提供了5个重载用于创建一个工作簿,通过Worksheets 获取到当前sheet页
Workbook中Worksheets属性可以通过sheet的下标和sheet的名称获分别取到将要操作的Worksheet对象 ,例如
Workbook work = new Workbook(@"路径"); Worksheet sheet = work.Worksheets["New Worksheet1"]; //Worksheet sheet = work.Worksheets[0];//根据下标
wb.Worksheets.Clear(); 删除当前工作表
wb.Worksheets.Add("New Worksheet1") 新增一个工作表
2、操作单元格
Cell cell = sheet.Cells["A1"]; //Cell cell =sheet.Cells[0, 0]; cell.PutValue("单元格赋值"); //必须用PutValue方法赋值 cell.Style.ForegroundColor = Color.Yellow;//前景颜色 cell.Style.Pattern = BackgroundType.Solid;//设置背景样式实线 cell.Style.Font.Size = 10;//字体大小 cell.Style.Font.Color = Color.Blue;//背景颜色 cell.Style.Custom = "ddd, dd mmmm 'yy";//自定义格式: cell.Style.Rotation = 90; //旋转字体:
string value = cell.StringValue;取值
sheet.Cells[0, 0] 参数可以是对应的x、y轴坐标,也可以是A1、A2这种字符串
3、设置单元格计算公式
work.Cells["A1"].PutValue(1); work.Cells["B1"].PutValue(1); work.Cells["C1"].Formula = "SUM(A1:B1)"; work.CalculateFormula(true);
当需要给单元格做就计算公式时,使用formula设置指定单元格的公式,在保存之前必须调用CalculateFormula 方法,默认调用方法就可以,传入true参数忽略计算错误,
支持自定义函数,new CalculationOptions()对象出来自己做设置
4、插入图片
sheet.Pictures.Add(1, 0, "图片地址");
add方法规定了图片的插入必须传入坐标,图片可以是流或者地址
5、保存
work.Save("地址"); Stream stream= work.SaveToStream();
上面方法是aspose的原生导出方法,没破解的aspose.cells 在导出EXCEL,最后会多加一个 sheet 然后写上 Evaluation Only.......
可以通过NPOI来删除掉试用的标记sheet页,将aspose的workbook转为流,使用NPOI 读取流,通过xwb.removeSheetAt(xwb.NumberOfSheets() - 1);方法删除掉最后一个sheet,绕过没有授权的试用提醒。
IWorkbook workbook = new XSSFWorkbook(execlStream); workbook.RemoveSheetAt(workbook.NumberOfSheets - 1);
6、坐标转换
/// <summary> /// 将Excel坐标转换成10进制坐标, Item1 Row ,Item2 Column /// </summary> /// <param name="strCoordinate"></param> /// <returns></returns> private Tuple<int, int> TransferCoordinate(string strCoordinate) { int rowNumber = 0, columnNumber = 0; string strRowNum, strColumnNum; //获得换行数 MatchCollection collection = Regex.Matches(strCoordinate, @"\d+"); strRowNum = collection[0].ToString(); rowNumber = int.Parse(strRowNum); //获得列数 collection = Regex.Matches(strCoordinate, @"[A-Z]{1,3}"); strColumnNum = collection[0].ToString(); columnNumber = CalColumnNum(strColumnNum); return new Tuple<int, int>(rowNumber - 1, columnNumber - 1); ; } /// <summary> /// 获得Excel 列坐标 /// </summary> /// <param name="strCol"></param> /// <returns></returns> private int CalColumnNum(string strCol) { int num = 0, charNum; var charArr = strCol.ToUpper().Trim().ToCharArray(); for (int i = charArr.Length - 1, j = 0; i >= 0; i--, j++) { charNum = (int)charArr[i] - 64; num += (int)Math.Pow(26, j) * charNum; } return num; }
参考资料:
http://blog.csdn.net/peng790/article/details/53483597
http://blog.csdn.net/zhangyatoua/article/details/52315666
http://www.cnblogs.com/ysjBoke/p/4832872.html -- aspose中文的手册
http://www.aspose.com/docs/display/cellsnet/Home --官网