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("&", "&", df$your_column, fixed = TRUE) # 如果存在多层转义(比如&被多次转义成&amp;),可以循环替换直到完全还原 while(any(grepl("&", df$your_column, fixed = TRUE))){ df$your_column <- gsub("&", "&", 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
相关产品推荐
相关产品推荐

