在cell中如果cell中的文本有换行符, 默认是不显示换行的, 只有点了excel 工具栏中的“Wrap Text" 按钮, 才会显示换行, 见下图:

这个效果, 可以通过设置openxml的 style sheet 来实现。

xml
  <?xml version="1.0" encoding="utf-8" ?> 
<x:styleSheet xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<x:fonts count="1">
 <x:font>
  <x:sz val="11" /> 
  <x:color theme="1" /> 
  <x:name val="Calibri" /> 
  <x:family val="2" /> 
  <x:scheme val="minor" /> 
  </x:font>
  </x:fonts>
<x:fills count="2">
 <x:fill>
  <x:patternFill patternType="none" /> 
  </x:fill>
  </x:fills>
 <x:borders count="1">
 <x:border>
  <x:left /> 
  <x:right /> 
  <x:top /> 
  <x:bottom /> 
  <x:diagonal /> 
  </x:border>
  </x:borders>
 <x:cellXfs count="2">
  <x:xf numFmtId="0" fontId="0" fillId="0" borderId="0" /> 
 <x:xf numFmtId="0" fontId="0" fillId="0" borderId="0" applyAlignment="1">
  <x:alignment wrapText="1" /> 
  </x:xf>
  </x:cellXfs>
  </x:styleSheet>

在创建stylesheet时, 必须创建fonts, Fills,Borders 和cellXfs(CellFormats) 四个节点,

在显示cell是通过StyleIndex 来关联 cellXfs的Index 来改变cell 的显示样式, 注意, 这个index只能从1 开始,因此需要在cellXfs中加两个CellFormat子节点, 我们这里要设置 wrap text, 因此在第二个节点设置applyAlignment 并设wrap Text ="1". 上个关于openxml的帖子, 有人问怎么设置cell的 font,答案就是加一个font 子节点到fonts, 得到index, 再加一个cellformat 子节点 并设置fontid 为刚加的font的index。 把这个cellformat的id 给 要设置的cell的StyleIndex。

初始stylesheet 并加 wraptext  style:

Code
 private void InitializeStyleSheet()
        {
            spreadSheet.WorkbookPart.AddNewPart<WorkbookStylesPart>();
            spreadSheet.WorkbookPart.WorkbookStylesPart.Stylesheet = new Stylesheet();
            Stylesheet stylesheet = spreadSheet.WorkbookPart.WorkbookStylesPart.Stylesheet;

            stylesheet.Fonts = new DocumentFormat.OpenXml.Spreadsheet.Fonts(new Font(new FontSize() { Val = 11D }, new Color() { Theme = (UInt32Value)1U },
                                        new FontName() { Val = "Calibri" }, new FontFamily() { Val = 2 },
                                        new DocumentFormat.OpenXml.Spreadsheet.FontScheme() { Val = FontSchemeValues.Minor })) { Count = (UInt32Value)1U };
            stylesheet.Fills = new Fills(new DocumentFormat.OpenXml.Spreadsheet.Fill(new DocumentFormat.OpenXml.Spreadsheet.PatternFill() { PatternType = PatternValues.None })) { Count = (UInt32Value)2U };
            stylesheet.Borders = new Borders(new Border(new DocumentFormat.OpenXml.Spreadsheet.LeftBorder(),
                new DocumentFormat.OpenXml.Spreadsheet.RightBorder(), new DocumentFormat.OpenXml.Spreadsheet.TopBorder(),
                new DocumentFormat.OpenXml.Spreadsheet.BottomBorder(), new DiagonalBorder())) { Count = (UInt32Value)1U };

            stylesheet.CellFormats = new CellFormats();
            stylesheet.CellFormats.Count = 2;
            CellFormat cf0 = stylesheet.CellFormats.AppendChild(new CellFormat());
            cf0.NumberFormatId = 0;
            cf0.FontId = 0;
            cf0.BorderId = 0;
            cf0.FillId = 0;
            CellFormat cf = stylesheet.CellFormats.AppendChild(new CellFormat());
            cf.Alignment = new Alignment();
            cf.ApplyAlignment = true;
            cf.NumberFormatId = 0;
            cf.FontId = 0;
            cf.BorderId = 0;
            cf.FillId = 0;
            cf.Alignment.WrapText = true;
            spreadSheet.WorkbookPart.WorkbookStylesPart.Stylesheet.Save();
        }

创建cell时, 对style的引用:

Code
   public void WriteNewCell(Row row, string text, string cellName)
        {
            int index = InsertSharedStringItem2(text, shareStringPart);
            Cell cell = new Cell() { CellReference = new StringValue(cellName) };
            cell.CellValue = new CellValue(index.ToString());
            cell.DataType = new EnumValue<CellValues>(CellValues.SharedString);
            cell.StyleIndex = 1;
            row.Append(cell);
        }

注意 cell.StyleIndex = 1; 1 对应的是stylesheet 中的 cellfortmat 的index。

转载于:https://www.cnblogs.com/skyfei/archive/2009/07/16/1524695.html

Openxml: 导出excel 设置 cell的格式相关推荐

  1. java导出excel表格设置行高,POI导出Excel设置单元格格式

    使用Apache的POI相关API导出Excel设置单元格格式 栗子,一下各个代码之间的变量是通用的,要是在某个代码块中找不到某个变量,则可以向上找寻 准备工作 InputStream = templ ...

  2. 写得太好了!java导出excel设置单元格格式

    开头 学习如逆水行舟,尤其是IT行业有着日新月异的节奏. 而且现在这个浮躁而又拜金的社会,我相信很多人做技术并非出于热爱,只是被互联网的高薪吸引,毕竟技术岗位非常枯燥,不仅要面对奇奇怪怪的需求,还要不 ...

  3. java poi设置单元格格式为数值_java中导出excel设置单元格的样式为数字格式怎么设置_Java代码实现设置单元格格式...

    java中导出excel设置单元格的样式为数字格式怎么设置 如果是使用poi,它会自动根据参数值设置单元格为恰当格式,只需传入数字类型参数值即可,比如 double value=....; cell. ...

  4. java-EasyExcel导出excel设置单元格为文本格式(含代码)

    java-EasyExcel导出excel设置单元格为文本格式(含代码) 在使用EasyExcel导出excel模板时.我们会发现导出的日期和大长度数字都会自动更换格式,不是文本格式.并且在空白单元格 ...

  5. easypoi导出excel不设置样式_EasyPOI 导出excel设置边框,背景颜色,字体样式

    EasyPOI 导出excel设置边框,背景颜色,字体样式 EasyPOI 导出代码示例ExportParams exportParams = new ExportParams(); exportPa ...

  6. POI导出Excel设置单元格背景色

    POI导出Excel设置单元格背景色 导出Excel的时候,没有设置背景色,用2003版本的Excel工具打开会出现文档单元格背景自动填充黑色的情况,没有找到好的解决方法,就主动给他填充一种颜色,问题 ...

  7. POI导出EXCEL设置高度和宽度

    -------------------------------------------------------------------------------SSFRow hssfRow = shee ...

  8. NPOI导出excel设置打印为A4纸张

    NPOI导出excel设置打印为A4纸张: Sheet sheet1 = hssfworkbook.CreateSheet("表(横版)");                 sh ...

  9. jeecg导出excel设置样式XLS(03)与XLSX(07)

    jeecg版本依赖 <modelVersion>4.0.0</modelVersion><groupId>org.jeecgframework.boot</g ...

最新文章

  1. .NET Core微服务之路:不断更新中的目录 (v0.42)
  2. [禅悟人生]拿得起放得下, 才是真幸福
  3. 出现了奇数次的数字的算法
  4. iOS之深入解析Runtime的Method-Swizzling方法交换的妙用和底层原理
  5. python mac读取 文件属性_从Python获取和设置mac文件和文件夹查找器标签
  6. Python 中的range,以及numpy包中的arange函数
  7. 2017.4.19 多项式输出 思考记录
  8. QT每日一练day14:QFontDialog字体对话框
  9. CIO思考:混合云为行业注入了哪些活力?
  10. 三合一交友盲盒系统微信小程序源码/免授权盲盒源码/脱单盲盒APP分销代理源码
  11. 【MPLS ***】基础知识:模型、PE路由器、VRF、RD及RT
  12. 几种流行Webservice框架
  13. java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.mpg.ehr.humanaffairs.salaryb
  14. matlab 地形图案例,matlab-画地形图
  15. 详解p=q->next和p->next=q的区别,附代码
  16. 2M字节Flash Rom存储器W25Q16/W25X16 认识Flash
  17. 创建esp分区和msr分区是做什么用得
  18. springboot上传下载文件(4)--上传下载工具类(已封装)
  19. MT【256】2016四川高考解答压轴题
  20. 算法课程设计:使用Python完成可视化的五子棋AI

热门文章

  1. stark组件开发之添加功能实现
  2. 编写一个求和函数sum,使输入sum(2)(3)或输入sum(2,3),输出结果都为5
  3. Python常用模块——目录
  4. 我的第一个python web开发框架(3)——怎么开始?
  5. 作业九 ——报告及总结
  6. 从另一服务器传输文件到本服务器(服务器间传输文件)
  7. HDU 2087 (KMP不可重叠的匹配) 花布条
  8. [原创]Android Monkey测试工具使用介绍
  9. 解决sqlplus的segmentation fault或hang问题
  10. POJ 3301 三分(最小覆盖正方形)