c# - 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();
}
解决方案
我的订单不正确,我需要在 sheetaveas 之前使用 fs.close 。
推荐阅读
- python - 如何删除文件基名的一部分并将其附加到文件名的末尾?
- node.js - 使用 mlflow 服务器启动服务器时,有没有办法隐藏 mlflow ui 标头?
- graph - 如何查看 Neo4j 中导入的 rdf 文件?
- html - 为什么自动播放属性在 HTML5 中不起作用?
- macos - Mac 公证如何装订 pkg 文件
- yii2 - 如何在YII2中修改ActiveField的form-group div类
- javascript - 一次打印一个数组两个索引并拼接这些索引直到数组为空
- c++ - 如何计算 C++ 数组中高于平均值的值?
- laravel - 上传文件时出现错误“他“C:\xampp\tmp\phpC108.tmp”文件不存在或不可读。” 拉拉维尔 6.2
- amazon-web-services - Cognito 错误 AccessDenied 使用从 cognito 身份池获得的凭证(Javascript AWS SDK,区域 cn-north-1)