搜索
人大经济论坛 附件下载

附件下载

所在主题:
文件名:  table.xlsx
资料下载链接地址: https://bbs.pinggu.org/a-2562419.html
附件大小:


最近在编写适合日常工作数据集格式化输出的命令,其中需要解决在已有xlsx表格中连续输入且不覆盖原来内容,没有找到更好的方法,自己按照理解编写了一个MATA函数实现,现与Stata爱好者分享。自己水平有限,如果有更好的思路请各位不吝赐教,谢谢。


以下是代码和测试用的xlsx表格


  1. /*********************************************************
  2. row_emptyrange 函数
  3. 用途:检测某个当前目录下xlsx表中某个sheet指定区域是否为空,
  4. 并返回与指定区域大小相同且为空的起始行数,
  5. 可以用于读取已有的xlsx表,在不覆盖原有内容的基础上,
  6. 寻找合适的位置输出新的内容,类似于append的作用
  7. *********************************************************/

  8. mata: mata clear
  9. mata:
  10. real scalar row_emptyrange(string scalar tablename, string scalar sheetname, /// //指定的表格名称和sheet名称
  11. real scalar row1, real scalar row2, /// //指定区域的行范围 第row1行至第row2行 row1>=row2
  12. real scalar col1, real scalar col2) //指定区域的列范围 第col1列至第col2列 col1>=col2
  13. {
  14. class xl scalar b // 初始化xl()类
  15. string vector cells // 声明字符串向量 用于存储指定的区域
  16. real scalar i // 判断指定区域的长度
  17. real vector rowrange// 声明实数向量 行范围
  18. real vector colrange// 声明实数向量 列范围

  19. i=0
  20. rowrange=(row1\row2)
  21. colrange=(col1,col2)

  22. b.load_book(tablename) // 加载表名
  23. b.set_sheet(sheetname) // 加载sheet名
  24. cells=b.get_string(rowrange,colrange) // 获取指定位置的内容

  25. printf("The first specified range is:row[%f,%f] and col[%f,%f]\n", row1,row2,col1,col2)
  26. cells // 显示指定区域大小的内容
  27. i=rowsum(colsum(ustrlen(cells))) // 判断指定区域的长度
  28. printf("The length of initially specified range is: %f\n",i)

  29. while (i) { // 如果长度不为0
  30. row1=row1+1 // 则行范围递增1 此处可以修改进行快速判断
  31. row2=row2+1 // 同上
  32. rowrange=(row1\row2)
  33. cells=b.get_string(rowrange,colrange) // 列范围不变
  34. i=rowsum(colsum(ustrlen(cells))) // 判断指定区域的长度
  35. cells // 显示指定区域大小的内容
  36. printf("The length of the new range with the same size as the initially specified range is: %f\n",i)
  37. }
  38. printf("The row of the new range with same size is: %f\n", row1)

  39. return(row1) // 返回输出新表的起始行数 可以修改

  40. }
  41. end

  42. mata: row_emptyrange("table.xlsx","Sheet1",1,6,1,4)
复制代码










    熟悉论坛请点击新手指南
下载说明
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。
2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。
3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。
(如有侵权,欢迎举报)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

GMT+8, 2025-12-31 16:54