【问题标题】:How to create "standardized" Excel workbooks using SAS如何使用 SAS 创建“标准化”Excel 工作簿
【发布时间】:2013-11-08 17:13:11
【问题描述】:

我有一个“宽”的 SAS 数据集,必须每周将其导出到新的 Excel 工作簿中。我想每周保留列宽和其他 Excel 属性,但我无法让它工作。这是我正在尝试的。

  1. 我使用 PROC EXPORT 创建了一个新工作簿(使用 sheet="New_TACs")。
  2. 我手动调整了列宽和其他工作表属性 (如“过滤器”、列宽、换行、对齐和“冻结窗格”)。
  3. 我删除了所有的数据行(保留第一行与列 名称)并将其保存为名为“template.xlsx”的新工作簿。
  4. 使用 SAS 系统调用,我将“template.xlsx”复制到“this_week.xlsx”。 我再次使用 PROC EXPORT 来尝试更新新工作簿,但我 得到警告。结果包含一个名为“New_TACS1”的工作表。

这是 SAS 日志:

720  proc export data=new_tacs
721     outfile="\\server-path\this_week.xlsx"
722     replace;
723     sheet='New_TACs';
724  run;

WARNING: The target file may contain unmatched range name and sheet name.
WARNING: The target file may contain unmatched range name and sheet name.
WARNING: File _IMEX_.New_TACs.DATA does not exist.
WARNING: Table _IMEX_."New_TACs" has not been dropped.
NOTE: "New_TACs" range/sheet was successfully created.
NOTE: PROCEDURE EXPORT used (Total process time):
      real time           23.88 seconds
      cpu time            1.80 seconds

我不知道该怎么做,如果有任何想法或建议,我将不胜感激。

【问题讨论】:

    标签: sas


    【解决方案1】:

    我认为问题在于,对于零行,SAS 无法正确处理数据。我根本无法让 PROC EXPORT 工作,但只有一个虚拟行,我至少可以让它与 libnamePROC APPEND 一起工作。如果过滤器对此负有部分责任,我不会感到惊讶。

    在创建包含 SASHELP.CLASS 列的空白 excel 文件、添加过滤器、添加一行虚拟数据并保存/关闭后,我会这样做:(此处必须为更新访问 SCANTEXT=NO)

    libname newtac "c:\temp\test.xlsx" scantext=no getnames=yes;
    
    proc append base=newtac.'New_TACs$_xlnm#_FilterDatabase'n data=sashelp.class force;
    run;
    
    libname newtac clear;
    

    至少接近了。出于某种原因,我得到了一些空白行,可能是由于我在查看此内容时所做的其他事情。

    您最好的解决方案可能是等待 9.4 TS1M0 和 ODS EXCEL,这将让您直接从 SAS 做所有这些事情;或使用 DDE。

    【讨论】:

      【解决方案2】:

      我建议您查看 SaviCells。 http://www.sascommunity.org/wiki/SaviCells。它提供了更好的 SAS to Excel 功能,包括创建包含所有 Excel 格式的模板并将其用于新数据。

      【讨论】:

        【解决方案3】:

        在 SAS 中使用 DDE 来实现这一点。

        您可以按照您希望的方式创建您的 excel 模板。 然后使用 DDE:

        1. 打开 Excel
        2. 打开要用作模板的 excel 文件
        3. 用更新的数据填充它
        4. 将文件另存为新文件名

        这是一种有点过时的技术,但它可以完成工作。

        谷歌搜索 SAS 和 DDE 会发现大量代码示例和教程。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多