Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Aspose.Cells.CellsException-”的;您正在使用评估副本,并且打开的文件超过了限制“;_C#_Asp.net_Excel_Aspose_Aspose Cells - Fatal编程技术网

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

C# Aspose.Cells.CellsException-”的;您正在使用评估副本,并且打开的文件超过了限制“;,c#,asp.net,excel,aspose,aspose-cells,C#,Asp.net,Excel,Aspose,Aspose Cells,我创建了一个函数,它从工作簿返回数据表 public async Task<DataTable> GetDataTableFromTabRowColumn(string sheetName, int startRow, int endRow, int startCol, int endCol) { var task = new Task(() => { DataTable dt = new DataTable(); Wor

我创建了一个函数,它从
工作簿
返回
数据表

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;
  }
公共异步任务GetDataTableFromTabRowColumn(字符串sheetName、int startRow、int endRow、int startCol、int endCol)
{
变量任务=新任务(()=>
{
DataTable dt=新的DataTable();
工作簿wb=新工作簿(文件路径);//错误行
工作表=wb.工作表[工作表名称];
dt=工作表.Cells.ExportDataTable(startRow-1,startCol-1,(endRow-startRow+1),(endCol-startCol+1),选项);
});
task.Start();
等待任务;
返回dt;
}
运行良好。当我使函数异步时,它显示错误:

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


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

您必须通过以下方式添加许可证:

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

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

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

包含条目程序集(您的.exe)的文件夹

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


在将其归咎于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;            
}
公共异步任务GetDataTableFromTabRowColumn(字符串sheetName、int startRow、int endRow、int startCol、int endCol)
{                  
var task=task.Run(()=>
{            
工作簿wb=新工作簿(文件路径);//错误行
工作表=wb.工作表[工作表名称];
DataTable dt=worksheet.Cells.ExportDataTable(startRow-1,startCol-1,(endRow-startRow+1),(endCol-startCol+1),选项);
返回dt;
});
返回等待任务;
}
请注意,
dt
可以而且应该像这样是本地的。
删除
私有数据表dt=null行,因为它可能会掩盖错误


当这仍然给出一个错误时,我会再次查看Aspsose

异常清楚地提到了问题,您使用的是试用版No。。我们正在使用许可版本。我很难相信这是您的准确(真实)代码,因为此代码试图从不存在的范围返回
dt
。这听起来确实有点像他们的许可证检查中的错误。但很难确定,就像@peterB注意到的那样,这是糟糕的伪代码。首先联系aspose帮助台,当您想在这里询问时,发布2个最小但正确的工作和不工作示例。是的。。这将是一个问题。正如我提到的。我刚刚在任务中添加了代码。最初的一个只有4行(当前在任务中),并返回dt。因为它在还东西之前就坏了。我没想到会有那么多麻烦。。我已经实施了它。在aspose许可文件中,有一行限制为10个开发人员,这可能是问题的原因。这不能解释非异步的区别。除非异步版本用于并行处理更多数据。我猜可能根本没有处理您的许可证代码,请参阅有关如何应用许可证的文档以供参考:请确保您的许可证代码在整个应用程序生命周期中至少处理一次。另外,我在Aspose担任支持开发者/布道者。
//Instantiate an instance of license and set the license through a stream
Aspose.Cells.License license = new Aspose.Cells.License();
license.SetLicense(myStream);
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;            
}