You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言使用read.xlsx读取文件时&符号转义异常问题求助

解决R语言读取xlsx时&符号被转义为&的问题

问题根源

这是因为使用write_xlsx写入文件时,默认会对HTML特殊字符(比如&)进行转义,将其转换为HTML实体编码&;后续用read.xlsx读取时,又没有自动还原这些转义字符,导致显示异常。

具体解决办法

1. 写入时直接禁用转义

如果你用的是openxlsx包的write_xlsx,可以通过escape = FALSE参数关闭HTML转义,让&保持原样写入:

library(openxlsx)
# 写入文件时禁用HTML转义
write_xlsx(your_data, "output.xlsx", escape = FALSE)

之后再用read.xlsx读取,&就会正常显示。

2. 读取后还原转义字符

如果已经生成了带有转义字符的文件,读取后可以手动还原:

用htmltools包解码

library(openxlsx)
library(htmltools)

# 读取文件
df <- read.xlsx("your_file.xlsx")
# 对目标列进行HTML解码,还原&符号
df$your_column <- html_decode(df$your_column)

手动替换(无需额外包)

如果不想安装新包,直接用gsub替换:

df$your_column <- gsub("&amp;", "&", df$your_column, fixed = TRUE)
# 如果存在多层转义(比如&被多次转义成&amp;amp;),可以循环替换直到完全还原
while(any(grepl("&amp;", df$your_column, fixed = TRUE))){
  df$your_column <- gsub("&amp;", "&", df$your_column, fixed = TRUE)
}

3. 更换读写包

如果上述方法不适用,可以换用不会自动转义的包:

  • 读取用readxl的read_xlsx:
library(readxl)
df <- read_xlsx("your_file.xlsx")
  • 写入用writexl的write_xlsx:
library(writexl)
write_xlsx(your_data, "output.xlsx")

这两个包默认都不会处理HTML特殊字符的转义。

内容的提问来源于stack exchange,提问作者lilblue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 01:51:06