我创建了一个从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。请帮助
答案 0 :(得分:1)
您必须通过these methods
添加许可证AsposeAspose.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。