API读取Excel数据时如何保留单元格原有文本格式与换行?
普通Excel数据读取接口默认返回的是单元格纯文本值,不会携带局部文本的格式信息,手动在内容里加<br>标签本质是插入普通文本字符,不会被接口识别为格式标记,自然无法实现格式保留效果。
Excel单元格的加粗、下划线、局部字体样式、手动换行等富文本效果,是和纯文本分开存储的富文本Run级属性,和文本内容本身独立,普通取值接口不会读取这部分属性。
可行方案
1. 调用富文本专用读取接口
不要使用返回纯文本的普通取值接口,改用对应平台提供的富文本读取能力:
- 若使用微软Graph API,不要请求
values字段,改为请求单元格的richText字段。该字段会将单元格内容拆分为多个文本片段,每个片段会返回对应文本内容、加粗/下划线/字号/字体颜色等格式参数,拿到分段结果后可自行拼接为HTML、Markdown等你需要的带格式内容。 - 若使用服务端SDK处理Excel(如OpenXML SDK、EPPlus、NPOI等),不要读取单元格的纯字符串值属性,找到单元格对应的
RichText集合属性,遍历每一个文本Run,逐段读取内容和绑定的格式标记。 - 关于换行:Excel单元格内的手动换行本质是文本中携带的
\n(ASCII编码10)字符,读取富文本内容时只要将识别到的\n转换为对应场景需要的换行标记(如前端场景的<br>、Markdown的双空格换行)即可,不需要手动在单元格内容里插入标签。
富文本接口返回的结构参考如下:
{ "richText": [ {"text": "Example of a big big text. ", "format": {}}, {"text": "This is underlined", "format": {"underline": true}}, {"text": " I add a breakpoint but it doesnt recognize when i get the data", "format": {}} ] }
拿到分段结果后,按照每个片段的格式参数包裹对应标签即可,例如下划线文本包裹<u>标签、加粗文本包裹<strong>标签。
2. 无富文本接口时的替代方案
如果你当前使用的拉取接口本身不支持返回富文本属性,直接放弃用该接口取带格式内容:
- 直接获取源Excel文件解析,.xlsx格式本质是zip压缩包,内部的xml文件完整存储了所有富文本分段和格式信息,可以用成熟的Excel处理SDK读取,不需要自己解析压缩包内容。
- 不推荐手动在单元格内插入HTML标签模拟格式的方案,这种方式需要额外写规则识别标签,还要处理标签在Excel端的显示隐藏问题,维护成本极高。
内容的提问来源于stack exchange,提问作者Nuno Marques
相关产品推荐
相关产品推荐

