Aspose.Cells导入数据到Excel,支持单元格操作

public class AsposeExcelHelper
    {
        /// <summary>
        /// 操作实例
        /// </summary>
        private Workbook currentWorkbook;

        public AsposeExcelHelper()
        {
            License license = new License();
            license.SetLicense(@"E:\Demo\ExcelTools\ExcelTools\Excel\License.lic");//aspose需要license
            currentWorkbook = new Workbook();
            currentWorkbook.Worksheets.Clear();//默认会有一张sheet
        }

        /// <summary>
        /// 保存
        /// </summary>
        public void Save()
        {
            string filePath = OpenSaveFolderBrowserDialog();
            currentWorkbook.Save(filePath);
        }

        /// <summary>
        /// 在Excel中新建sheet
        /// </summary>
        /// <param name="names"></param>
        public void CreateSheetByName(string[] names)
        {
            foreach (string name in names)
            {
                if (currentWorkbook.Worksheets.GetSheetByCodeName(name) == null)
                {
                    currentWorkbook.Worksheets.Add(name);

                    currentWorkbook.Worksheets.GetSheetByCodeName(name).AutoFitRows();
                }
            }
        }

        /// <summary>
        /// 向指定sheet中插入值
        /// </summary>
        public void ExportDataToExcel(string sheetName,List<string[]> values, int firstRow)
        {
            Cells cells = currentWorkbook.Worksheets.GetSheetByCodeName(sheetName).Cells;

            for(int valuesIndex = 0; valuesIndex < values.Count(); valuesIndex++)
            {
                string[] currentValue = values[valuesIndex];

                for (int valueIndex = 0; valueIndex < currentValue.Length; valueIndex++)
                {
                    cells[valuesIndex + firstRow, valueIndex].PutValue(currentValue[valueIndex]);
                }
            }
        }

        /// <summary>
        /// 合并指定sheet的指定单元格, 并插值(单行)
        /// </summary>
        /// <param name="numbers">合并单元格的个数</param>
        public void MergeCells(string sheetName,int[] numbers, int firstRow, string[] values)
        {
            Cells cells = currentWorkbook.Worksheets.GetSheetByCodeName(sheetName).Cells;
            int firstColumn = 0;
            for(int index = 0;index < numbers.Length;index ++ )
            {
                int number = numbers[index];

                cells.Merge(firstRow, firstColumn, 1, number);

                cells[firstRow, firstColumn].PutValue(values[index]);

                firstColumn += number;
            }
        }

        /// <summary>
        /// 设置保存Excel的路径
        /// </summary>
        private string OpenSaveFolderBrowserDialog()
        {
            SaveFileDialog fd = new SaveFileDialog();
            fd.Filter = "EXCEL文件(*.xls)|*.xls|EXCEL文件(*.xlsx)|*.xlsx";
            fd.FileName = "新建 Microsoft Excel 工作表";
            if (fd.ShowDialog() == DialogResult.OK)
            {
                return fd.FileName;
            }

            return string.Empty;
        }
    }

调用例子
private void BtnExport_Click(object sender, EventArgs e)
        {
            string sheetName = "IceWang";

            AsposeExcelHelper aspose = new AsposeExcelHelper();

            aspose.CreateSheetByName(new string[] { sheetName });

            //合并指定单元格,并向单行插值
            aspose.MergeCells(sheetName, new int[] { 2, 3, 1, 3 }, 0, new string[] { "上次监测时间", "2018/1/25", "本次监测时间", "2018/1/26" });
            aspose.MergeCells(sheetName, new int[] { 2, 1, 1, 1, 1, 1, 1, 1 }, 1, new string[] { "测试项目", "变化最大位置(点号)", "本次测值", "本次速率", "累计值", "预警值", "是否超过预警值", "备注" });

            //向为合并单元格插值
            List<string[]> values = new List<string[]>();
            values.Add(new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9" });
            values.Add(new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9" });
            values.Add(new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9" });
            values.Add(new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9" });
            aspose.ExportDataToExcel(sheetName, values, 2);

            aspose.Save();
        }

猜你喜欢

转载自blog.csdn.net/han317426731/article/details/79214051