gpt4 book ai didi

c# - 如何使用 Aspose 加速工作簿创建?

转载 作者:太空宇宙 更新时间:2023-11-03 12:05:23 24 4
gpt4 key购买 nike

我正在处理一些代码,我必须在其中打开 excel,更改一些单元格值,然后重新计算整个文件的公式,以获得两个特定值并通知它们。

问题是我必须对大量文件执行此操作,所有文件都具有不同的名称和不同的路径,并且每次都花费太多时间来创建工作簿。

即使只使用一个 excel 也需要几秒钟的时间来处理,最重要的是工作簿对象的创建。

有什么方法可以加快这个过程吗?

这是我的代码:

class Program
{
private class MyWorkbook : IDisposable
{
public Workbook Wb { get; set; }
public MyWorkbook(Workbook wb)
{
Wb = wb;
}

public void Dispose()
{

}
}

static void Main(string[] args)
{
Console.WriteLine("Started: " + DateTime.Now.ToString());

int i = 0;
while (i <= 10000)
{
using (MyWorkbook workbook = new MyWorkbook(new Workbook(@"C:\AppData\MyExcels\abcdefg.xlsm")))
{
workbook.Wb.Settings.CreateCalcChain = false;
workbook.Wb.Worksheets[1].Cells["M21"].Value = 5;
workbook.Wb.Worksheets[1].Cells["M22"].Value = 5;
workbook.Wb.Worksheets[1].Cells["M23"].Value = 5;
workbook.Wb.CalculateFormula();
Console.WriteLine(workbook.Wb.Worksheets[1].Cells["L81"].Value);
}
Console.WriteLine("Index: " + i);
i++;
}
Console.WriteLine("Finished: " + DateTime.Now.ToString());
Console.ReadLine();
}
}

谢谢。

最佳答案

首先,我们建议您尝试使用我们的最新版本,因为它在内存管理和读取或写入文件时的时间消耗方面有更多增强和修复。您是否发现 Aspose.Cells 在 Workbook 的实例化上花费了更多时间,或者它在计算工作簿中的公式时也花费了更多时间?我想您可能会尝试一些措施来最小化内存成本并加快进程。

  1. 如果通过 API 打开文件时进程花费更多时间并消耗更多内存,您可以尝试设置 MemorySetting.MemoryPreference 选项以优化单元格数据的内存使用并降低总体内存成本。因此,它可以提高过程的速度。请参阅示例代码段供您引用:例如示例代码:

    LoadOptions opt = new LoadOptions();
    // Set the memory preferences
    opt.MemorySetting = MemorySetting.MemoryPreference;

    // Instantiate the Workbook
    // Load the Big Excel file having large Data set in it
    Workbook wb = new Workbook(dataDir+ "Book1.xlsx", opt);
  2. 加载工作簿时尝试使用一些数据过滤选项。例如,请参阅 document关于加载工作簿时如何过滤数据/内容或对象。

  3. 尝试加载您想要的工作表,不要在工作簿中加载不必要的工作表。这可以提高性能并消耗更少的内存。在处理由许多工作表组成的大型工作簿时,此方法很有用。例如示例代码:

    // Define a new Workbook.

    Workbook workbook;

    // Load the workbook with the spcified worksheet only.
    LoadOptions loadOptions = new LoadOptions(LoadFormat.Xlsx);
    loadOptions.LoadFilter = new CustomLoad();

    // Creat the workbook.
    workbook = new Workbook(dataDir+ "TestData.xlsx", loadOptions);

    // Perform your desired task.

    // Save the workbook.
    workbook.Save(dataDir+ "outputFile.out.xlsx");
    ....
    Here is the implementation of the CustomLoad class.
    ........
    class CustomLoad : LoadFilter
    {
    public override void StartSheet(Worksheet sheet)
    {
    if (sheet.Name == "Sheet2")
    {
    // Load everything from worksheet "Sheet2"
    this.LoadDataFilterOptions = LoadDataFilterOptions.All;
    }
    else
    {
    // Load nothing
    this.LoadDataFilterOptions = LoadDataFilterOptions.None;
    }
    }
    }

附言。我在 Aspose 担任支持开发人员/传播者。

关于c# - 如何使用 Aspose 加速工作簿创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55345226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com