AsposeHelper.cs

AsposeHelper.cs 是一个C#静态类,提供Aspose库的辅助方法,用于操作Word文档(如打开、保存、获取和设置页眉页脚)以及Excel工作簿(如打开、保存、获取数据表、设置单元格)。该类包含处理段落、页眉页脚、工作表和单元格的静态方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System.Data;
using System.IO;
using Aspose.Cells;
using Aspose.Words;
using Aspose.Words.Tables;

namespace DAQ.BaseLib.Helper
{
    using Cell = Aspose.Cells.Cell;
    using DocSaveFormat = Aspose.Words.SaveFormat;
    using XlsSaveFormat = Aspose.Cells.SaveFormat;

    /// <summary>
    /// 表格页眉页脚
    /// </summary>
    public enum HeaderFooterPart
    {
        Left = 0,
        Center = 1,
        Right = 2
    }

    public static class AsposeHelper
    {
        #region Words

        /// <summary>
        /// 打开指定路径文档
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public static Document OpenDocument(string path)
        {
            return File.Exists(path) ? new Document(path) : null;
        }

        /// <summary>
        /// 将已打开文档保存至指定位置
        /// </summary>
        /// <param name="document"></param>
        /// <param name="path"></param>
        /// <param name="saveFormat"></param>
        public static void Save(Document document, string path, DocSaveFormat saveFormat)
        {
            document.Save(path, saveFormat);
        }

        #region __章节段落
        /// <summary>
        /// 获取指定章节
        /// </summary>
        /// <param name="document"></param>
        /// <param name="sectionIndex"></param>
        /// <returns></returns>
        public static Section GetSection(Document document, int sectionIndex)
        {
            return document.Sections[sectionIndex];
        }

        /// <summary>
        /// 获取指定段落
        /// </summary>
        /// <param name="document"></param>
        /// <param name="sectionIndex"></param>
        /// <param name="paragraphIndex"></param>
        /// <returns></returns>
        public static Paragraph GetParagraph(Document document, int sectionIndex, int paragraphIndex)
        {
            return GetSection(document, sectionIndex).Body.Paragraphs[paragraphIndex];
        }

        #endregion

        #region __页眉页脚
        /// <summary>
        /// 获取页眉页脚
        /// </summary>
        /// <param name="document"></param>
        /// <param name="getHeader"></param>
        /// <returns></returns>
        public static string GetHeaderFooter(Document document, bool getHeader)
        {
            for (var i = 0; i < document.Sections.Count; i++)
            {
                var section = document.Sections[i];
                var headersFooters = section.HeadersFooters;
                for (var j = 0; j < headersFooters.Count; j++)
                {
                    var headersFooter = headersFooters[j];
                    var headerType = headersFooter.HeaderFooterType;
                    var rangeText = headersFooter.Range.Text.TrimEnd();

                    if (getHeader)
                    {
                        if (headerType == HeaderFooterType.HeaderPrimary)
                        {
                            return rangeText;
                        }
                    }
                    else
                    {
                        if (headerType == HeaderFooterType.FooterPrimary)
                        {
                            return rangeText;
                        }
                    }
                }
            }
            return string.Empty;
        }

        /// <summary>
        /// 设置页眉页脚
        /// </summary>
        /// <param name="document"></param>
        /// <param name="getHeader"></param>
        /// <param name="text"></param>
        public static void SetHeaderFooter(Document document, bool getHeader, string text)
        {
            var builder = new DocumentBuilder(document);
            builder.MoveToHeaderFooter(getHeader ? HeaderFooterType.HeaderPrimary : HeaderFooterType.FooterPrimary);
            builder.RowFormat.Alignment = RowAlignment.Center;
            builder.Write(text);
        }

        /// <summary>
        /// 清空页眉页脚
        /// </summary>
        /// <param name="document"></param>
        public static void ClearHeaderFooter(Document document)
        {
            for (var i = 0; i < document.Sections.Count; i++)
            {
                var section = document.Sections[i];
                var headersFooters = section.HeadersFooters;
                headersFooters.Clear();
            }
        }

        #endregion

        #endregion

        #region Cells

        /// <summary>
        /// 打开指定路径工作簿
        /// </summary>
        /// <param name="path">工作簿路径</param>
        /// <returns></returns>
        public static Workbook OpenWorkbook(string path)
        {
            return File.Exists(path) ? new Workbook(path) : null;
        }

        /// <summary>
        /// 将已打开工作簿保存至指定位置
        /// </summary>
        /// <param name="workbook">已打开工作簿对象</param>
        /// <param name="path">工作簿路径</param>
        /// <param name="saveFormat">存储格式</param>
        public static void Save(Workbook workbook, string path, XlsSaveFormat saveFormat)
        {
            workbook.Save(path, saveFormat);
        }

        /// <summary>
        /// 自适应行高
        /// </summary>
        /// <param name="sheet"></param>
        public static void AutoFitRows(Worksheet sheet)
        {
            sheet.AutoFitRows(sheet.Cells.MinDataRow, sheet.Cells.MaxDataRow);
        }

        /// <summary>
        /// 自适应列宽
        /// </summary>
        /// <param name="sheet"></param>
        public static void AutoFitColumns(Worksheet sheet)
        {
            sheet.AutoFitColumns(sheet.Cells.MinDataColumn, sheet.Cells.MaxDataColumn);
        }

        #region __表单
        /// <summary>
        /// 获取指定编号表单
        /// </summary>
        /// <param name="workbook">已打开工作簿对象</param>
        /// <param name="sheetIndex">表单索引</param>
        /// <returns></returns>
        public static Worksheet GetWorksheet(Workbook workbook, int sheetIndex)
        {
            return sheetIndex < 0 ? null : workbook.Worksheets[sheetIndex];
        }

        /// <summary>
        /// 根据路径获取指定编号表单
        /// </summary>
        /// <param name="path">工作簿路径</param>
        /// <param name="sheetIndex">表单索引</param>
        /// <returns></returns>
        public static Worksheet GetWorksheet(string path, int sheetIndex)
        {
            return GetWorksheet(OpenWorkbook(path), sheetIndex);
        }

        /// <summary>
        /// 添加表单
        /// </summary>
        /// <param name="workbook"></param>
        /// <param name="sheetName"></param>
        /// <returns></returns>
        public static int AddSheet(Workbook workbook, string sheetName)
        {
            var sheetIndex = workbook.Worksheets.Add(SheetType.Worksheet);
            var sheet = workbook.Worksheets[sheetIndex];
            sheet.Name = sheetName;
            return sheetIndex;
        }

        /// <summary>
        /// 拷贝表单
        /// </summary>
        /// <param name="target"></param>
        /// <param name="source"></param>
        /// <param name="options"></param>
        public static void CopySheet(Worksheet target, Worksheet source, CopyOptions options = null)
        {
            // 拷贝表单
            target.Copy(source, options);
            // 设置页面边距
            target.PageSetup.LeftMargin = source.PageSetup.LeftMargin;
            target.PageSetup.RightMargin = source.PageSetup.RightMargin;
            target.PageSetup.TopMargin = source.PageSetup.TopMargin;
            target.PageSetup.BottomMargin = source.PageSetup.BottomMargin;
            // 适应页面宽高
            target.PageSetup.FitToPagesWide = source.PageSetup.FitToPagesWide;
            target.PageSetup.FitToPagesTall = source.PageSetup.FitToPagesTall;
        }

        #endregion

        #region __数据表
        /// <summary>
        /// 将单元格集群转换为数据表
        /// </summary>
        /// <param name="worksheet"></param>
        /// <returns></returns>
        public static DataTable GetDataTable(Worksheet worksheet)
        {
            var cells = worksheet.Cells;
            return cells.ExportDataTable(0, 0, cells.MaxRow, cells.MaxColumn);
        }

        /// <summary>
        /// 打开指定路径表格文件并直接得到数据表
        /// </summary>
        /// <param name="path"></param>
        /// <param name="sheetIndex"></param>
        /// <returns></returns>
        public static DataTable OpenDataTable(string path, int sheetIndex = 0)
        {
            var workbook = OpenWorkbook(path);
            var worksheet = GetWorksheet(workbook, sheetIndex);
            return worksheet == null ? null : GetDataTable(worksheet);
        }

        #endregion

        #region __单元格
        /// <summary>
        /// 设置单元格(包括合并单元格)
        /// </summary>
        /// <param name="cell"></param>
        /// <param name="value"></param>
        public static void SetCell(Cell cell, string value)
        {
            if (cell.IsMerged)
            {
                cell.GetMergedRange().PutValue(value, false, false);
            }
            else
            {
                cell.PutValue(value);
            }
        }

        /// <summary>
        /// 获取单元格(包括合并单元格)
        /// </summary>
        /// <param name="cell"></param>
        /// <returns></returns>
        public static string GetCell(Cell cell)
        {
            return cell.IsMerged ? cell.GetMergedRange()[0, 0].StringValue : cell.StringValue;
        }

        /// <summary>
        /// 设置单元格(按行列索引获取且包括单元格)
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="rowIndex"></param>
        /// <param name="colIndex"></param>
        /// <param name="value"></param>
        public static void SetCell(Worksheet sheet, int rowIndex, int colIndex, string value)
        {
            var cell = sheet.Cells[rowIndex, colIndex];
            SetCell(cell, value);
        }

        /// <summary>
        /// 获取单元格(按行列索引获取且包括单元格)
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="rowIndex"></param>
        /// <param name="colIndex"></param>
        /// <returns></returns>
        public static string GetCell(Worksheet sheet, int rowIndex, int colIndex)
        {
            var cell = sheet.Cells[rowIndex, colIndex];
            return GetCell(cell);
        }

        #endregion

        #region __页眉页脚
        /// <summary>
        /// 获取页眉页脚
        /// </summary>
        /// <param name="worksheet">当前正在操作的表单</param>
        /// <param name="partType">页眉页脚位置 [左/中/右]</param>
        /// <param name="getHeader">true: 获取页眉; false: 获取页脚</param>
        /// <param name="filterPrefix">是否过滤前缀,默认过滤</param>
        /// <returns></returns>
        public static string GetHeaderFooter(Worksheet worksheet, HeaderFooterPart partType, bool getHeader, bool filterPrefix = true)
        {
            string res;
            try
            {
                res = getHeader ? worksheet.PageSetup.GetHeader((int)partType) : worksheet.PageSetup.GetFooter((int)partType);
                res = filterPrefix ? res.Substring(2) : res;
            }
            catch
            {
                res = null;
            }
            return res;
        }

        /// <summary>
        /// 设置页眉页脚
        /// </summary>
        /// <param name="worksheet">当前正在操作的表单</param>
        /// <param name="partType">页眉页脚位置 [左/中/右]</param>
        /// <param name="setHeader">true: 设置页眉; false: 设置页脚</param>
        /// <param name="text">设置文本</param>
        /// <returns></returns>
        public static bool SetHeaderFooter(Worksheet worksheet, HeaderFooterPart partType, bool setHeader, string text)
        {
            try
            {
                if (setHeader)
                {
                    worksheet.PageSetup.SetHeader((int)partType, text);
                }
                else
                {
                    worksheet.PageSetup.SetFooter((int)partType, text);
                }
                return true;
            }
            catch
            {
                return false;
            }
        }

        /// <summary>
        /// 清空页眉页脚
        /// </summary>
        /// <param name="worksheet"></param>
        public static void ClearHeaderFooter(Worksheet worksheet)
        {
            worksheet.PageSetup.ClearHeaderFooter();
        }

        #endregion

        #endregion
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值