Aspose.Cells.CellsException-“您正在使用评估副本,并且打开的文件超出限制”

时间:2019-01-02 09:55:45

标签: c# asp.net excel aspose aspose-cells

我创建了一个从datatable返回workbook的函数。

public async Task<DataTable> GetDataTableFromTabRowColumn(string sheetName, int startRow, int endRow, int startCol, int endCol)
  {
     var task = new Task(() =>
     {
        DataTable dt = new DataTable();
        Workbook wb = new Workbook(FilePath); // error line
        Worksheet worksheet = wb.Worksheets[sheetName];

        dt = worksheet.Cells.ExportDataTable(startRow - 1, startCol - 1, (endRow - startRow + 1), (endCol - startCol + 1), options);
     });

     task.Start();
     await task;

     return dt;
  }

运行良好。当我使函数异步时,它显示错误:

  

Aspose.Cells.CellsException:'您正在使用评估版副本,   已打开超出限制的文件。'

我正在使用许可的Aspose。请帮助

2 个答案:

答案 0 :(得分:1)

您必须通过these methods

添加许可证Aspose
  

Aspose.Cells尝试在以下位置找到许可证:

     

显式路径包含Aspose.Cells.dll的文件夹

     

包含名为Aspose.Cells.dll的程序集的文件夹

     

包含入口程序集(您的.exe)的文件夹

     

程序集中的嵌入式资源,称为Aspose.Cells.dll

//Instantiate an instance of license and set the license file through its path
Aspose.Cells.License license = new Aspose.Cells.License();
license.SetLicense("Aspose.Cells.lic");

//Instantiate an instance of license and set the license through a stream
Aspose.Cells.License license = new Aspose.Cells.License();
license.SetLicense(myStream);

答案 1 :(得分:1)

在将其归咎于Aspose之前,让我们修复异步方法。

public async Task<DataTable> GetDataTableFromTabRowColumn(string sheetName, int startRow, int endRow, int startCol, int endCol)
{                  
    var task = Task.Run(() =>
    {            
        Workbook wb = new Workbook(FilePath); // error line
        Worksheet worksheet = wb.Worksheets[sheetName];

        DataTable dt = worksheet.Cells.ExportDataTable(startRow - 1, startCol - 1, (endRow - startRow + 1), (endCol - startCol + 1), options);

        return dt;
    });

    return await task;            
}

请注意,dt可以而且应该是本地的。
删除private DataTable dt = null;行,因为它可能掩盖错误。

如果仍然出现错误,我将再次查看Aspsose。