it编程 > 编程语言 > C#

C#实现设置Excel表格中文本对齐方式和格式

9人参与 2025-04-24 C#

在 excel 中,对齐、换行和旋转是用于设置单元格内容显示方式的功能。合理的设置这些文本选项可以帮助用户更好地组织和展示 excel 表格中的数据,使表格更加清晰、易读,提高数据的可视化效果。本文将介绍如何在.net 程序中通过c# 设置excel单元格中文本的对齐方式、方向以及换行。

安装所需.net库

本文需要用到一个名为 free spire.xls for .net 的免费国产库。该库支持多种excel文档操作功能,包括生成、读取、编辑、打印、转换等。

该库可以直接通过visual studio > nuget程序包管理器中搜索 “freespire.xls” 来安装。

c# 设置excel中文本的对齐方式、方向以及换行

免费spire.xls库的 cellstyle 类提供了多种属性来设置单元样式包括其中的文本对齐。旋转等。具体步骤参考:

c#代码:

using spire.xls;

namespace setexcelcolumnwidth
{
    class program
    {

        static void main(string[] args)
        {
            // 创建工作簿
            workbook wookbook = new workbook();

            // 获取第一张工作表
            worksheet sheet = wookbook.worksheets[0];

            // 添加说明文字
            sheet.range["b1"].text = "文字对齐方式";
            sheet.range["d1"].text = "文字方向";
            sheet.range["f1"].text = "文字换行";
            sheet.range["b1:f1"].style.font.isbold = true;
            sheet.range["b1:f1"].style.knowncolor = excelcolors.lightgreen;

            // 左对齐
            sheet.range["b3"].text = "左对齐";
            sheet.range["b3"].style.horizontalalignment = horizontalaligntype.left;

            // 水平居中
            sheet.range["b4"].text = "水平居中";
            sheet.range["b4"].style.horizontalalignment = horizontalaligntype.center;

            // 右对齐
            sheet.range["b5"].text = "右对齐";
            sheet.range["b5"].style.horizontalalignment = horizontalaligntype.right;

            // 居上
            sheet.range["b7"].text = "靠上";
            sheet.range["b7"].style.verticalalignment = verticalaligntype.top;

            // 垂直居中
            sheet.range["b8"].text = "垂直居中";
            sheet.range["b8"].style.verticalalignment = verticalaligntype.center;

            // 居下
            sheet.range["b9"].text = "靠下";
            sheet.range["b9"].style.verticalalignment = verticalaligntype.bottom;

            // 分散对齐并居中
            sheet.range["b10"].text = "水平分散对齐+垂直居中";
            sheet.range["b10"].style.horizontalalignment = horizontalaligntype.distributed;
            sheet.range["b10"].style.verticalalignment = verticalaligntype.center;

            // 逆时针旋转45°
            sheet.range["d7"].text = "旋转45°";
            sheet.range["d7"].style.rotation = 45;

            // 逆时针旋转90°
            sheet.range["d8"].text = "旋转90°";
            sheet.range["d8"].style.rotation = 90;

            // 顺时针旋转45°
            sheet.range["d9"].text = "旋转-45°";
            sheet.range["d9"].style.rotation = -45;

            // 顺时针旋转90°
            sheet.range["d10"].text = "旋转-90°";
            sheet.range["d10"].style.rotation = -90;

            // 添加‘\n'进行文字换行
            sheet.range["f8"].text = "这是\n手动\n换行";

            // 自动换行
            sheet.range["f9"].text = "这一段话设置了自动换行";
            sheet.range["f9"].style.wraptext = true;

            // 设置行高列宽
            sheet.columns[1].columnwidth = 15;
            sheet.columns[3].columnwidth = 15;
            sheet.columns[5].columnwidth = 15;
            sheet.range["b3:b5"].rowheight = 15;
            sheet.range["b7:b10"].rowheight = 50;

            // 保存文档
            wookbook.savetofile("excel文本对齐.xlsx", fileformat.version2013);
        }
    }
}

生成文档:

知识扩展

c# 对excel 单元格格式, 及行高、 列宽、 单元格边框线、 冻结设置

1.对行高,列宽、单元格边框等的设置

这篇简短的文字对单元格的操作总结的比较全面,特此转载过来。

private _workbook _workbook = null;
private worksheet _worksheet = null;
private excel.application _excelapplicatin = null;
 
_excelapplicatin = new excel.application();
_excelapplicatin.visible = true;
_excelapplicatin.displayalerts = true;
 
_workbook = _excelapplicatin.workbooks.add(xlsheettype.xlworksheet);
_worksheet = (worksheet)_workbook.activesheet;
_worksheet.name = "worksheetname";
 
//打开已存在的excel
string strexcelpathname = appdomain.currentdomain.basedirectory + "excelsheetname.xls";
excel.workbook workbook = application.workbooks.open(strexcelpathname, type.missing, type.missing,
              type.missing, type.missing, type.missing, type.missing, type.missing,
              type.missing, type.missing, type.missing, type.missing, type.missing);
//读取已打开的excel
excel.worksheet worksheet1 = (excel.worksheet)workbook.sheets["sheetname1"];
excel.worksheet worksheet2 = (excel.worksheet)workbook.sheets["sheetname2"];        
 
//添加一个worksheet
worksheet worksheet = (worksheet)workbook.worksheets.add(system.type.missing, system.type.missing, system.type.missing, system.type.missing);
 
//rowheight   "1:1"表示第一行, "1:2"表示,第一行和第二行 
((excel.range)_worksheet.rows["1:1", system.type.missing]).rowheight = 100;
 
//columnwidth "a:b"表示第一列和第二列, "a:a"表示第一列
((excel.range)_worksheet.columns["a:b", system.type.missing]).columnwidth = 10;
 
// excel操作(需要冻结的字段 按住alt+w 再按f)
 excel.range excelrange = _worksheet .get_range(_worksheet .cells[10, 5], _worksheet .cells[10, 5]);
excelrange.select();
excelapplication.activewindow.freezepanes = true;
 
//borders.linestyle 单元格边框线
excel.range excelrange = _worksheet.get_range(_worksheet.cells[2, 2], _worksheet.cells[4, 6]);
//单元格边框线类型(线型,虚线型)
excelrange.borders.linestyle = 1;
excelrange.borders.get_item(xlbordersindex.xledgetop).linestyle = excel.xllinestyle.xlcontinuous;
//指定单元格下边框线粗细,和色彩
excelrange.borders.get_item(xlbordersindex.xledgebottom).weight = excel.xlborderweight.xlmedium;
 
excelrange.borders.get_item(xlbordersindex.xledgebottom).colorindex =3;
 
//设置字体大小
excelrange.font.size = 15;
//设置字体是否有下划线
excelrange.font.underline = true;  
 
//设置字体在单元格内的对其方式
excelrange.horizontalalignment = xlhalign.xlhaligncenter;
//设置单元格的宽度
excelrange.columnwidth = 15;
//设置单元格的背景色
excelrange.cells.interior.color = system.drawing.color.fromargb(255, 204, 153).toargb();
// 给单元格加边框
excelrange.borderaround(xllinestyle.xlcontinuous, xlborderweight.xlthick, 
xlcolorindex.xlcolorindexautomatic, system.drawing.color.black.toargb());
//自动调整列宽
excelrange.entirecolumn.autofit();
// 文本水平居中方式
excelrange.horizontalalignment = excel.xlhalign.xlhaligncenter;            
//文本自动换行
excelrange.wraptext = true;
//填充颜色为淡紫色
excelrange.interior.colorindex = 39;
 
//合并单元格
excelrange.merge(excelrange.mergecells);
_worksheet.get_range("a15", "b15").merge(_worksheet.get_range("a15", "b15").mergecells);
 
/// <summary>
/// 常用颜色定义,对就excel中颜色名
/// </summary>
public enum colorindex
{
   无色 = -4142,   自动 = -4105,   黑色 = 1,   褐色 = 53,   橄榄 = 52,   深绿 = 51,   深青 = 49,
   深蓝 = 11,   靛蓝 = 55,   灰色80 = 56,   深红 = 9,   橙色 = 46,   深黄 = 12,   绿色 = 10,
   青色 = 14,   蓝色 = 5,   蓝灰 = 47,   灰色50 = 16,   红色 = 3,   浅橙色 = 45,   酸橙色 = 43,
   海绿 = 50,   水绿色 = 42,   浅蓝 = 41,       紫罗兰 = 13,   灰色40 = 48,   粉红 = 7,
   金色 = 44,   黄色 = 6,   鲜绿 = 4,   青绿 = 8,   天蓝 = 33,   梅红 = 54,   灰色25 = 15,
   玫瑰红 = 38,   茶色 = 40,   浅黄 = 36,   浅绿 = 35,   浅青绿 = 34,   淡蓝 = 37,   淡紫 = 39,
   白色 = 2
}

code segment2

    range.numberformatlocal = "@";     //设置单元格格式为文本
    range = (range)worksheet.get_range("a1", "e1");     //获取excel多个单元格区域:本例做为excel表头
    range.merge(0);     //单元格合并动作
    worksheet.cells[1, 1] = "excel单元格赋值";     //excel单元格赋值
    range.font.size = 15;     //设置字体大小
    range.font.underline=true;     //设置字体是否有下划线
    range.font.name="黑体";       设置字体的种类   
    range.horizontalalignment=xlhalign.xlhaligncenter;     //设置字体在单元格内的对其方式
    range.columnwidth=15;     //设置单元格的宽度
    range.cells.interior.color=system.drawing.color.fromargb(255,204,153).toargb();     //设置单元格的背景色
    range.borders.linestyle=1;     //设置单元格边框的粗细
    range.borderaround(xllinestyle.xlcontinuous,xlborderweight.xlthick,xlcolorindex.xlcolorindexautomatic,system.drawing.color.black.toargb());     //给单元格加边框
    range.borders.get_item(microsoft.office.interop.excel.xlbordersindex.xledgetop).linestyle = microsoft.office.interop.excel.xllinestyle.xllinestylenone; //设置单元格上边框为无边框
        range.entirecolumn.autofit();     //自动调整列宽
    range.horizontalalignment= xlcenter;     // 文本水平居中方式
    range.verticalalignment= xlcenter     //文本垂直居中方式
    range.wraptext=true;     //文本自动换行
    range.interior.colorindex=39;     //填充颜色为淡紫色
    range.font.color=clblue;     //字体颜色
    xlsapp.displayalerts=false;     //保存excel的时候,不弹出是否保存的窗口直接进行保存

excel interior.colorindex色彩列表

对用的interior.colorindex色彩列表。

在c# 对excel编程中的使用:

 for (int i = 5; i < countrow + 1; i++)
            {
                string strkb = null;
                microsoft.office.interop.excel.range kbrng = (microsoft.office.interop.excel.range)shesource.cells[i, 1];
                if (kbrng.value2 != null)
                    strkb = kbrng.value2.tostring();
                if (strtotal.contains(strkb))
                    kbrng.interior.colorindex = 3;
            }

2.常见的excel单元格格式设置内容

数字(range.numberformatlocal 属性)

常规:

range.numberformatlocal = "g/通用格式"

数值:

range.numberformatlocal = "0.000_" --保留小 数位数为3  (此处“_”表示:留下一个与下一个字符同等宽度的空格)

range.numberformatlocal = "0" --不要小数

range.numberformatlo cal = "#,##0.000" --保留小数位数为3,并使用千位分隔符

货币:

range.numberformatlocal = "$#,##0.000"

百分比:

range.numberformatlocal = "0.000%"

分数:

range.numberformatlocal = "# ?/?"

科学计数:

range.numberformatlocal = "0.00e+00"

文本

range.numberformatlocal = "@"

特殊:

对齐

字体(font对象)

边框(borders对象)

到此这篇关于c#实现设置excel表格中文本对齐方式和格式的文章就介绍到这了,更多相关c#设置excel表格文本格式内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

C# 多项目打包时如何将项目引用转为包依赖(最新推荐)

04-24

C# 串口扫描枪读取数据的实现

04-24

C#之线程同步Mutex类方式

04-24

C# 多线程并发编程基础小结

04-24

C#中实现CAN通信的使用

04-24

C# 配置文件app.config 和 web.config详解

04-24

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论