怎样在Lingo中导入Excel数据表?
发布网友
发布时间:2022-05-02 18:50
我来回答
共3个回答
热心网友
时间:2022-06-26 01:14
@OLE是从EXCEL中引入或输出数据的接口函数,它是基于传输的OLE技术。OLE传输直接在内存中传输数据,并不借助于中间文件。当使用@OLE时,LINGO先装载EXCEL,再通知EXCEL装载指定的电子数据表,最后从电子数据表中获得Ranges。为了使用OLE函数,必须有EXCEL5及其以上版本。OLE函数可在数据部分和初始部分引入数据。
@OLE可以同时读集成员和集属性,集成员最好用文本格式,集属性最好用数值格式。原始集每个集成员需要一个单元(cell),而对于n元的派生集每个集成员需要n个单元,这里第一行的n个单元对应派生集的第一个集成员,第二行的n个单元对应派生集的第二个集成员,依此类推。
@OLE只能读一维或二维的Ranges(在单个的EXCEL工作表(sheet)中),但不能读间断的或三维的Ranges。Ranges是自左而右、自上而下来读。
例4.16
sets:
PRODUCT; !产品;
MACHINE; !机器;
WEEK; !周;
ALLOWED(PRODUCT,MACHINE,WEEK):x,y; !允许组合及属性;
endsets
data:
rate=0.01;
PRODUCT,MACHINE,WEEK,ALLOWED,x,y=@OLE('D:\IMPORT.XLS');
@OLE('D:\IMPORT.XLS')=rate;
enddata
代替在代码文本的数据部分显式输入形式,我们把相关数据全部放在如下电子数据表中来输入。下面是D:\IMPORT.XLS的图表。
除了输入数据之外,我们也必须定义Ranges名:PRODUCT,MACHINE,WEEK,ALLOWED,x,y. 明确的,我们需要定义如下的Ranges名:
Name Range
PRODUCT B3:B4
MACHINE C3:C4
WEEK D3:D5
ALLOWED B8:D10
X F8:F10
Y G8:G10
rate C13
为了在EXCEL中定义Ranges名:
① 按鼠标左键拖曳选择Range,
② 释放鼠标按钮,
③ 选择“插入|名称|定义”,
④ 输入希望的名字,
⑤ 点击“确定”按钮。
我们在模型的数据部分用如下代码从EXECL中引入数据:
PRODUCT,MACHINE,WEEK,ALLOWED,x,y=@OLE('D:\IMPORT.XLS');
@OLE('D:\IMPORT.XLS')=rate;
等价的描述为
PRODUCT,MACHINE,WEEK,ALLOWED,x,y
=@OLE('D:\IMPORT.XLS', PRODUCT,MACHINE,WEEK,ALLOWED,x,y);
@OLE('D:\IMPORT.XLS',rate)=rate;
这一等价描述使得变量名和Ranges不同亦可。
热心网友
时间:2022-06-26 01:14
举例说明:我要将'C:\Users\Lenovo\Desktop\lingodata.xlsx'里的数据导入lingo
1.左键拖动选中'C:\Users\Lenovo\Desktop\lingodata.xlsx'里的数据,快捷键control+F3插入--定义名称为dist,保存好。
2.dist= @OLE('C:\Users\Lenovo\Desktop\lingodata.xlsx','dist');
将EXCEL中的文件读 入LINGO;
热心网友
时间:2022-06-26 01:15
用@ole函数 a=@ole('路径', 区域);
区域自己在excel里面先定义好