2016-12-02 145 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文件。 –