首页 > 技术文章 > aspose.Cells使用方法

li-lun 2017-10-24 17:02 原文

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 --官网

 

推荐阅读