2016-12-02 153 views
0

我遇到問題,我正在導入循環表Excel到有時會出現Excel導出問題

我的代碼是這樣的:

#WINAPI 
#Excel 
SysExcelApplication  excel; 
SysExcelWorkbooks  books; 
SysExcelWorkbook  book; 
SysExcelWorksheets  sheets; 
SysExcelWorksheet  sheet; 
SysExcelCells   cells; 
SysExcelCell   cell; 
SysExcelRange   columns; 

while select myTable 
{ 
    cell = sheet.cells().item(row, col); 
    cell.value(myTable.FieldI); 
    sheet.columns().autoFit(); 
    col++; 

    cell = sheet.cells().item(row, col); 
    cell.value(myTable.FieldII); 
    sheet.columns().autoFit(); 
    col++; 

    row++; 
    col=1; 
} 
// when the cycle end save my file 

但有時我給一個錯誤的樣子消息調試

「的變量賦值錯誤的參數類型ErrorMessege

o f提供的參數與方法接受的參數數量不同

但奇怪的是,如果我嘗試重新啓動導出,我不會收到錯誤。 我有這個問題

我有相同的代碼和相同的數據。 當我生成文件時,excle行是完美的。 我在這些情況的50%中有這個問題。

創建的行數少於1700。 它取決於什麼?我有很多行?或其他?

我分享網站Some question發現了同樣的問題,我試圖用,但我以前不解決我的問題: 我添加更多的信息不slved我的問題,建議change settings

感謝,

享受

+0

請覈實您的任何值,對數字和日期值逗號分隔符。 –

+0

Hi @Pradeep Muttikulangara Vasu,謝謝你的回覆。是的,我有正確的分隔符。有時我可以創建文件。 – ulisses

回答

1

是的,當開發任何導出Excel有這個問題,當多行。如果行數很少,那麼它就是完美的。

對於這種情況下,始終更改CSV導出的Excel導出。導出csv文件的代碼永遠不會失敗,並且工作完美!

這裏我留下一個例子來導出5行的CSV文件。

代碼:

static void ExportCSV(Args _args) 
{ 
    Commaio  file; 
    container lineCSV; 
    #File 
    str   DatosLinea[500]; 
    int   _i; 
    str   filename; 
    Dialog  dialog; 
    DialogField dialogFileName; 

    ; 

    dialog   = new Dialog("Path CSV"); 
    dialogFileName = dialog.addField(ExtendedTypeStr("FilenameSave"),"Path File:"); 

    if (dialog.run()) 
    { 
     filename = dialogFileName.value(); 
    } 

    if (!filename) 
    { 
     return; 
    } 

    file = new Commaio((filename), 'W'); //Path + file name.csv 
    file.outFieldDelimiter(';'); 
    if(!file || file.status() != IO_Status::Ok) 
    { 
     throw error("File Cannot be opened"); 
    } 

    DatosLinea[1] = "Col 1"; 
    DatosLinea[2] = "Col 2"; 
    DatosLinea[3] = "Col 3"; 
    DatosLinea[4] = "Col 4"; 
    DatosLinea[5] = "Col 5"; 

    _i = 1; 
    lineCSV = conNull(); 
    while(_i <= 5){ 
     lineCSV += DatosLinea[_i]; 
     _i += 1; 
    } 

    file.write(lineCSV); 

    info("Export end"); 
} 
+0

非常感謝@Jonathan Bravetti爲您的答覆,但有任何方式出口到XLS沒有問題? – ulisses

+0

或者您知道一些Fix? – ulisses

+0

我真的不知道。我發現的唯一解決方案(我不喜歡)每隔200行關閉並保存excel文件。 –