如何在R中导入XLS/XLSM格式Excel表且所有值保持为字符类型不自动转换
R读取XLS/XLSM格式Excel强制全列为字符型方案
方案1:readxl包(通用XLS/XLSX/XLSM适配)
read_excel()的col_types参数支持传入单个全局类型值,直接设置为text即可关闭所有自动类型转换,包括日期识别、数值转换、布尔值转换全都会失效,所有单元格内容读取为字符型:
library(readxl) daten <- read_excel( path = Path, sheet = Worksheet, col_names = TRUE, col_types = "text" # 核心配置:全局强制所有列为字符型 )
如果需要匹配单元格的格式化显示值(比如日期格式单元格显示为01.02.2018,而非Excel底层存储的日期序列号),可使用第二种方案。
方案2:openxlsx包(XLSM格式适配更优)
针对XLSM格式兼容性更好,同时支持直接匹配单元格格式的显示文本读取:
library(openxlsx) # 读取时强制所有列为字符,关闭自动日期识别 daten <- readWorkbook( xlsxFile = Path, sheet = Worksheet, colNames = TRUE, colTypes = "character", # 全局强制所有列为字符型 detectDates = FALSE # 禁用自动日期转换 )
效果验证
运行str(daten)即可看到所有列均为字符型,和预期输出完全一致:
str(daten) # Date: chr [1:500] "01.02.2018" "01.03.2018" # Type: chr [1:500] "01" "01" "02" # Option: chr [1:500] "TRUE" "FALSE" # Exp: chr [1:500] "0.00003" "4.322324E-5"
内容的提问来源于stack exchange,提问作者Proki
相关产品推荐
相关产品推荐

