使用SuiteScript生成Excel文件时,如何为每个单元格添加边框?
给Excel XML添加行列边框的解决方案
你的现有代码仅构建了表格结构和内容,但未定义边框样式,因此生成的Excel不会显示边框。要解决这个问题,需在XML中添加样式定义,并为单元格或行绑定样式。
修改后的完整代码
var xmlStr = ''; xmlStr += '<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" '; xmlStr += 'xmlns:o="urn:schemas-microsoft-com:office:office" '; xmlStr += 'xmlns:x="urn:schemas-microsoft-com:office:excel" '; xmlStr += 'xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" '; xmlStr += 'xmlns:html="http://www.w3.org/TR/REC-html40">'; // 新增样式定义:带全边框的样式 xmlStr += '<Styles>'; xmlStr += '<Style ss:ID="DefaultBorder">'; xmlStr += '<Borders>'; xmlStr += '<Border ss:Position="Left" ss:LineStyle="Continuous" ss:Weight="1"/>'; xmlStr += '<Border ss:Position="Right" ss:LineStyle="Continuous" ss:Weight="1"/>'; xmlStr += '<Border ss:Position="Top" ss:LineStyle="Continuous" ss:Weight="1"/>'; xmlStr += '<Border ss:Position="Bottom" ss:LineStyle="Continuous" ss:Weight="1"/>'; xmlStr += '</Borders>'; xmlStr += '</Style>'; xmlStr += '</Styles>'; xmlStr += '<Worksheet ss:Name="Sheet1">'; xmlStr += "<Table>"; // 给行绑定边框样式,该行所有单元格自动继承 xmlStr += "<Row ss:StyleID='DefaultBorder'>"; xmlStr += '<Cell><Data ss:Type="String">Client Name</Data></Cell>'; xmlStr += '<Cell><Data ss:Type="String">Entity</Data></Cell>'; xmlStr += '<Cell><Data ss:Type="String">Payment Terms</Data></Cell>'; xmlStr += '<Cell><Data ss:Type="String">AR - Overdue</Data></Cell>'; xmlStr += '<Cell><Data ss:Type="String">Unapplied</Data></Cell>'; xmlStr += '<Cell><Data ss:Type="String">Net Overdue</Data></Cell>'; xmlStr += '<Cell><Data ss:Type="String">%</Data></Cell>'; xmlStr += '<Cell><Data ss:Type="String">Country</Data></Cell>'; xmlStr += "</Row>"; // 后续数据行同样添加ss:StyleID="DefaultBorder"即可应用边框 xmlStr += "</Table>"; xmlStr += "</Worksheet>"; xmlStr += "</Workbook>";
关键说明
- 在
<Workbook>节点内新增<Styles>区块,定义ID为DefaultBorder的样式,包含上下左右四条连续细边框。 - 给
<Row>添加ss:StyleID="DefaultBorder",可让整行单元格自动继承边框样式;若需单独给某个单元格设置边框,直接给<Cell>添加该属性即可。 - 确保XML命名空间(尤其是
ss前缀)正确,否则样式无法生效。
内容的提问来源于stack exchange,提问作者Md Faizi
相关产品推荐
相关产品推荐

