2016-10-10 54 views
1

我正在做一個關於maple的迭代計算,我希望將每次迭代的結果數據(列矩陣中出現)存儲到Excel文件的特定列中。例如,我的數據是使用迭代循環將數據導出到excel

mydat||1:= <<11,12,13,14>>:

mydat||2:= <<21,22,23,24>>:

mydat||3:= <<31,32,33,34>>:

等。 我想將它們中的每一個導出到excel文件中,我希望每個數據都存儲在同一個excel文件的連續列中。例如,mydat || 1進入A列,mydat || 2進入B列,依此類推。我嘗試了下面的東西。

with(ExcelTools): 
for k from 1 to 3 do 
Export(mydat||k, "data.xlsx", "Sheet1", "A:C"): #The problem is selecting the range. 
end do: 

如何在這裏適當地選擇範圍?有沒有其他方法可以導出數據並以我上面解釋的方式存儲?

回答

2

有幾種方法可以做到這一點。最簡單的方法當然是將所有數據放入一個數據結構中,然後導出。例如:

mydat1:= <<11,12,13,14>>: 
mydat2:= <<21,22,23,24>>: 
mydat3:= <<31,32,33,34>>: 
mydata := Matrix(< mydat1 | mydat2 | mydat3 >); 

這存儲在一個矩陣,其中mydat1是第一列數據,mydat2爲第二列,等等。利用在該形式的數據,無論是ExcelTools:-Export或更通用的Export命令將工作:

ExcelTools:-Export(data, "data.xlsx"); 
Export("data.xlsx", data); 

現在既然您提到您正在進行迭代計算,您可能希望將結果逐列寫出。這是另一種不涉及創建另一個數據結構以容納結果的方法。這確實假定mydat「i」中的數據已經在循環之前創建。

for i to 3 do 
    ExcelTools:-Export(cat(`mydat`,i), "data.xlsx", 1, ["A1","B1","C1"][i]); 
end do; 

如果你想將數據寫入到一個文件,當你建造它,那麼就做創作每一列的後出口的呼叫,即

ExcelTools:-Export(mydat1, "data.xlsx", 1, "A1"); 

注意,我刪除了「||」字符。這些在楓樹中用於concatenation,並在第二種方法中引起了一些問題。