如何用openxlsx2判断工作表是否有数据并按需写入表格?
实现逻辑说明
openxlsx2 中没有直接的wb_get_cell_value函数,但可以通过wb_read_data()读取指定单元格或整个工作表的数据来判断是否为空。具体实现步骤如下:
- 先确保目标工作表存在(复用你已有的
Sheet_toevoegen函数) - 读取目标单元格(如B2)或整个工作表的数据
- 判断读取结果是否为空,为空则写入数据表格
具体代码实现
方法1:判断指定单元格(B2)是否为空
# 先确保工作表存在 wb <- Sheet_toevoegen(wb, "OW10") # 读取B2单元格的数据,返回data.frame格式 b2_data <- wb_read_data(wb, sheet = "OW10", dims = "B2") # 提取单元格值 b2_value <- ifelse(nrow(b2_data) > 0, b2_data[1, 1], NA) # 判断单元格为空/NA时写入数据 if (is.na(b2_value) || b2_value == "") { wb <- wb_add_data_table( wb = wb, x = df_OW10, sheet = "OW10", dims = "B2", banded_rows = TRUE, table_style = "TableStyleLight16" ) }
方法2:判断整个工作表是否无数据
如果需要确保整个工作表完全没有数据再写入,可使用这种方式:
# 先确保工作表存在 wb <- Sheet_toevoegen(wb, "OW10") # 读取整个工作表的数据 sheet_data <- wb_read_data(wb, sheet = "OW10") # 判断工作表为空(无行或无列,或所有值都是NA) if (nrow(sheet_data) == 0 || ncol(sheet_data) == 0 || all(is.na(sheet_data))) { wb <- wb_add_data_table( wb = wb, x = df_OW10, sheet = "OW10", dims = "B2", banded_rows = TRUE, table_style = "TableStyleLight16" ) }
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

