调用Microsoft Graph API的clear端点时如何保留Excel列数字格式
问题根因
调用Microsoft Graph API操作Excel文件执行单元格清除操作时,clear端点默认的清除范围是全部内容,会同时移除单元格值、公式、数字格式、单元格样式、数据验证规则,这就是执行清除后货币、日期等数字格式全部丢失的原因,属于接口的默认行为,并非调用异常。
可行解决方案
方案1:调用clear接口时指定仅清除内容,保留格式
调用clear端点时,在请求体中传入applyTo参数,值设为Contents,即可只清空单元格内的值和公式,所有预设的单元格格式(包括货币、日期、自定义数字格式、单元格样式等)都会完整保留。
示例请求:POST /drives/{drive-id}/items/{excel-file-id}/workbook/worksheets/{target-sheet-name}/range(address='{需清空的单元格范围,比如A1:F1000}')/clear Content-Type: application/json { "applyTo": "Contents" }注意不要传
All(默认值,内容格式全清)、Formats(仅清格式)这两个参数值,否则还是会丢失格式。方案2:跳过单独的clear步骤,写入新数据时直接覆盖旧值
如果写入范围固定,可以直接调用range更新接口,传入新的values数组直接覆盖对应位置的旧数据,不需要提前执行清除操作。这种方式下只要更新请求里不携带numberFormat、format类的格式相关属性,原有单元格的所有格式都会保留,不会出现格式丢失问题。
示例请求:PATCH /drives/{drive-id}/items/{excel-file-id}/workbook/worksheets/{target-sheet-name}/range(address='{要写入的单元格范围}') Content-Type: application/json { "values": [ ["订单日期", "订单金额", "商品名称"], ["2024-05-01", 99.9, "无线鼠标"], ["2024-05-02", 1299, "机械键盘"] ] }
避坑提示
如果后续需要在写入时调整部分单元格的数字格式,建议单独调用range的numberFormat更新接口做定向调整,不要在全量清除、全量写入的请求里携带格式参数,避免覆盖原有的预设格式。
内容的提问来源于stack exchange,提问作者Mauricio
相关产品推荐
相关产品推荐

