2.79 FAQ-839 如何避免Origin随着越多数据的导入变得越慢?

Last Update: 5/9/2022


当您导入大量的文件(通过数据:从文件导入),您可能会发现随着越来越多的文件导入,Origin变得越来越慢。这可能经常发生在使用LabTalk或OriginC代码来导入大量的数据文件。可能导致变慢的原因有:

  • 保存在工作表的迷你图(显示或隐藏)
  • 为了使重导数据可用,文件的信息会记录到工作簿(导入之后,您可以在工作簿管理器里找到所有导入文件的路径和文件名)
  • 导入的撤消机制(如果使用OriginC或LabTalk来循环导入很多文件)

您可以尝试下面的办法来避免Origin变慢。

Contents

关闭迷你图

FAQ1070 turnoff sparkline.png


如果您运行LabTalk脚本

在导入的代码中加入以下选项

options.Sparklines:=0


如果您已经导入了文件,并且迷你图已经打开

运行下面的脚本来删除所有的迷你图,然后重新保存项目。

StringArray sa;

doc -e P
{
	if (%H == "sparkline*")
		sa.Add(%H);
}

int nn = sa.GetSize();
for (int ii=1; ii<=nn; ii++)
{
	win -c %(sa.GetAt(ii)$);
}


关闭保存文件信息到工作簿中

FAQ1070 turnoff save file info in wkb.png

或者,

设置系统变量@npi为1,从而不会记录导入文件信息到工作簿。请参阅此页面了解修改系统变量的详细步骤。


如果您运行LabTalk脚本

在导入的代码中加入以下选项

options.Miscs.SaveFileInfo:=0


注意: 不保存导入信息的话,您将不能使用数据:重导数据菜单来重新导入数据。当您关闭保存文件信息到工作簿中,请记住这将不能使用重导数据。

暂时关闭撤销功能

在导入之前,设置系统变量@UN为0,完成导入后,再恢复撤销功能。

如果您运行OriginC代码

使用类似于下面例子的函数:

void DoImport()
{
    // This class sets a system variable to a new value
    // while storing the old value.
    // When the instance of the class goes out of scope,
    // the instance is destroyed and the system variable
    // restored to it's previous value.
 
   LTVarTempChange junk("@UN", 0);

   // Perform all importing in same scope as above class instance until done.
}

如果您运行LabTalk脚本

// Save current value of @UN.
int nOld = @UN;

// Turn off Undo.
@UN = 0;

// Perform all importing until done.

// Finally restore previous value of @UN.
@UN = nOld;

Keywords:impasc, slow, import file, freeze, take long time, data import, import ASCII, project, slowness, OPJ, save, open, sparkline,LT, OC, import,multiple, many,files, loop, speed, memory, import, re-import,操作慢,导入文件,超级卡顿,长时间,数据导入,工程,项目,缩略图,迷你图,导入,很多,循环,速度,存储,重新导入