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;
}