Stata 使用Mata xl()合并Excel中的单元格

Stata 使用Mata xl()合并Excel中的单元格,stata,Stata,我使用Stata命令putexcel或export Excel创建了许多Excel表格 保存后,我需要格式化许多表。由于文件的大小,我尝试使用mata进行格式化,而不是putexcel 这很好,除非我尝试将两个单元格合并为一个: *Build sample matrix set obs 10 foreach i of numlist 1/10{ gen var`i' = _n + `i' } mkmat var1-var10, matrix(m) *To Excel quietly

我使用Stata命令
putexcel
export Excel
创建了许多Excel表格

保存后,我需要格式化许多表。由于文件的大小,我尝试使用
mata
进行格式化,而不是
putexcel

这很好,除非我尝试将两个单元格合并为一个:

*Build sample matrix
set obs 10
foreach i of numlist 1/10{
    gen var`i' = _n + `i'
}

mkmat var1-var10, matrix(m)

*To Excel
quietly putexcel set "Test_Merge.xlsx", sheet("Sheet1") modify
quietly putexcel A1=matrix(m) 

*Prep for mata
mata: b = xl()
mata: b.load_book("Test_Merge.xlsx")

*Left-align some cells
mata: cols = (1,2)
mata: b.set_horizontal_align(1, cols, "left")

*Center some cells
mata: cols = (4,5)
mata: b.set_horizontal_align(1, cols, "center")

*Merge some cells
mata: cols = (7,8)
mata: b.set_horizontal_align(1, cols, "merge")
使用
putexcel
命令,我将执行以下操作:

quietly putexcel (G1:H1), merge
但是,在
mata
版本中,“merge”选项似乎只是将指定的单元格居中,而不是将它们合并在一起


我是否误解了
b中的“合并”选项。设置水平对齐()

您需要改用
mata
函数:

清楚的 *建立样本矩阵 设置obs 10 numlist的foreach i 1/10{ gen var`i'=\u n+`i' } mkmat var1-var10,矩阵(m) *出类拔萃 修改Excel集合“Test_Merge.xlsx”,工作表(“Sheet1”) 表A1=矩阵(m) *为玛塔做准备 mata:b=xl() mata:b.load\u book(“Test\u Merge.xlsx”) *左对齐一些单元格 mata:cols=(1,2) mata:b.设置水平对齐(1列,“左”) *把一些细胞集中起来 mata:cols=(4,5) mata:b.设置水平对齐(1列,“中心”) *合并一些单元格 mata:行=(1,1) mata:cols=(7,8) mata:b.set\U sheet\U merge(“Sheet1”,行,列) 请注意粗体的更改,这将函数应用于两个单元格

clear *Build sample matrix set obs 10 foreach i of numlist 1/10{ gen var`i' = _n + `i' } mkmat var1-var10, matrix(m) *To Excel quietly putexcel set "Test_Merge.xlsx", sheet("Sheet1") modify quietly putexcel A1=matrix(m) *Prep for mata mata: b = xl() mata: b.load_book("Test_Merge.xlsx") *Left-align some cells mata: cols = (1,2) mata: b.set_horizontal_align(1, cols, "left") *Center some cells mata: cols = (4,5) mata: b.set_horizontal_align(1, cols, "center") *Merge some cells mata: rows = (1,1) mata: cols = (7,8) mata: b.set_sheet_merge("Sheet1", rows, cols)