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

R语言提取非结构化txt文件中多表格并导出至Excel的实现方法

R语言提取txt多表格并导出Excel实现方案
  • 所需依赖包:readr(读取文本行)、dplyr(数据处理)、stringr(字符串处理)、openxlsx(写入Excel文件)
# 安装依赖(首次运行执行)
install.packages(c("readr", "dplyr", "stringr", "openxlsx"))
# 加载依赖
library(readr)
library(dplyr)
library(stringr)
library(openxlsx)
# 读取txt所有行,替换为你自己的data.txt实际路径
file_path <- "data.txt"
all_lines <- read_lines(file_path, skip_empty_rows = TRUE)

# 定位所有表格起始行位置
table_start_idx <- which(str_detect(all_lines, "^// TABLE "))
# 提取所有表格名称
table_names <- str_remove(all_lines[table_start_idx], "^// TABLE ")
# 补充表格结束位置标识,方便截取内容
table_end_idx <- c(table_start_idx[-1] - 1, length(all_lines))

# 初始化存储所有表格的列表
table_list <- list()

# 循环处理每个表格
for (i in seq_along(table_start_idx)) {
  # 截取当前表格的所有关联行
  current_table_lines <- all_lines[table_start_idx[i]:table_end_idx[i]]
  # 提取列名:表格起始行的下一行,去掉前缀的//和空白符
  col_line <- str_remove(current_table_lines[2], "^//\\s*")
  col_names <- str_split(col_line, "\\s+")[[1]]
  # 提取数据行:跳过前3行(TABLE标识行、列名行、字段类型行)
  data_lines <- current_table_lines[-c(1:3)]
  # 分割每行数据为独立字段
  data_list <- lapply(data_lines, function(x) {
    str_split(str_trim(x), "\\s+")[[1]]
  })
  # 转换为数据框并设置列名
  df <- as.data.frame(do.call(rbind, data_list), stringsAsFactors = FALSE)
  colnames(df) <- col_names
  # 自动转换字段类型,可根据需求替换为自定义类型转换逻辑
  df <- type.convert(df, as.is = TRUE)
  # 存入列表,名称对应Excel的sheet名
  table_list[[table_names[i]]] <- df
}

# 导出为Excel文件,每个表格对应一个独立sheet
write.xlsx(table_list, file = "表格提取结果.xlsx", overwrite = TRUE)

注意事项

  • 若你的文件包含中文,可在read_lines函数中添加locale = locale(encoding = "GBK")或locale = locale(encoding = "UTF-8")适配文件编码
  • 若需要严格匹配文件中标注的字段类型,可提取第三行的类型列表,对数据框逐列做对应转换即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:06:01