首页 > 解决方案 > SpreadsheetLight 更新 excel 文件

问题描述

我想读取 excel 文件然后找到正确的行并向该行添加一个值但是我收到一个错误消息文件被另一个进程使用。

我已将文件添加到 FileStream,所以我不确定为什么会收到此错误?

System.IO.IOException:“该进程无法访问文件 'D:\repos\FHIRVal\Update.xlsx',因为它正被另一个进程使用。”

public static int UpdateExecelFile(string id, string status)
    {
        string FilePath = "D:\\repos\\FHIRVal\\Update.xlsx";


        using (SLDocument sl = new SLDocument())
        {
            FileStream fs = new FileStream(FilePath, FileMode.Open);
            SLDocument sheet = new SLDocument(fs, "Sheet");

            SLWorksheetStatistics stats = sheet.GetWorksheetStatistics();
            for (int j = 1; j < stats.EndRowIndex; j++)
            {
                var value = sheet.GetCellValueAsString(j, 2);

                if (value == id)
                {
                    Console.WriteLine(string.Format("{0} --- {1}", "Updating File", id));
                    string updateRow = string.Format("{0}{1}", "C",j);

                    sl.SetCellValue(updateRow, status);
                }

            }
            sheet.SaveAs(FilePath);
            fs.Close();
        }

标签: c#spreadsheetlight

解决方案


我的订单不正确,我需要在 sheetaveas 之前使用 fs.close 。


推荐阅读