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
}
}
AsposeHelper.cs
最新推荐文章于 2025-05-06 14:38:22 发布