编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

NPOI批量修改Excel单元格内指定文字的样式

wxchong 2024-06-22 21:10:15 开源技术 8 ℃ 0 评论

/// <summary>

/// NPOI批量修改Excel单元格内指定文字的样式

/// </summary>

/// <param name="oldExcelPath">需要修改的Excel文件路径</param>

/// <param name="newExcelPath">修改后输出的Excel文件路径</param>

/// <param name="Bold.txt">需要被更改的文字列表以换行分割</param>

public void EditExcelCellStyle(string oldExcelPath, string newExcelPath)

{

string txtpath = AppDomain.CurrentDomain.BaseDirectory + "Bold.txt";

List<string> list = Tools.ReadTxt(txtpath);

string[] arr = list.ToArray();

arr = arr.Where(s => !string.IsNullOrEmpty(s)).ToArray();//过滤空字符串

//打开对象文件

FileStream fs = new FileStream(oldExcelPath, FileMode.Open, FileAccess.Read);

//新建一个Excel

IWorkbook workbook = new XSSFWorkbook(fs);

//根据索引获取第一个表

ISheet sheet = workbook.GetSheetAt(0);

var font = workbook.CreateFont();

font.IsBold = true;

//这里可以设置字体大小 颜色等等

for (int i = sheet.FirstRowNum; i <= sheet.LastRowNum; i++)

{

IRow row = sheet.GetRow(i);

//for (int j = row.FirstCellNum; j < row.LastCellNum; j++)

for (int j = 3; j < row.LastCellNum; j += 6)

{

if (row.GetCell(j) != null)

{

row.GetCell(j).SetCellType(CellType.String);

}

ICell cell = row.GetCell(j);

if (cell != null)

{

//得到原来的值

string cellContent = cell.StringCellValue;

if (i > 2 && j == 9)

{

int length = cellContent.Length;

row.HeightInPoints = 20 * (length / 17);

}

//替换和字典对应的值

foreach (string item in arr)

{

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表