You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Linux系统下使用OLEDB操作Excel时创建文件失败求助

问题:连接Ubuntu服务器上的Excel文件报错“Failure creating file”

问题场景

  • 目标文件:Ubuntu服务器上的Excel文件,路径格式:
string filePath = @"\\serverIP\fileName.xlsx";
  • 使用的连接字符串:
string connectionString = $@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={filePath};Extended Properties='Excel 12.0;'";
  • 操作代码:
string DataSource = @"\\serverIP\fileName.xlsx";

public static void botEdit(string editString,string DataSource,int x)
{
    try
    {
        OleDbCommand com = new OleDbCommand();
        OleDbConnection con = new OleDbConnection($"Provider=Microsoft.ACE.OLEDB.12.0;Data Source ={DataSource};Extended Properties='Excel 12.0 Xml;HDR=YES;'");

        con.Open();
        com.Connection = con;
        com.CommandText = editString;

        com.ExecuteNonQuery();

        if (x > 1)
        {
            MessageBox.Show("Done");
        }

        con.Close();
    }
    catch (Exception ex) 
    {
        MessageBox.Show(ex.Message);
    }
}
  • 报错信息:

Failure creating file

解决思路及方案

1. 排查Ubuntu SMB共享配置

你用的SMB路径(\\serverIP\fileName.xlsx)依赖Ubuntu的SMB服务,先确认以下几点:

  • 确保Ubuntu已安装并启动samba服务,目标文件所在目录已添加到SMB共享配置(/etc/samba/smb.conf),配置中需指定正确的读写权限。
  • 检查文件系统权限:Ubuntu上目标文件的所属用户/组需允许SMB访问账号读取和写入。
  • 手动验证:在Windows资源管理器输入\\serverIP,尝试打开共享并编辑Excel文件,确认账号有权限。

2. 替换为跨平台Excel操作库

Microsoft ACE OLEDB是Windows专属驱动,通过SMB访问Linux文件时容易出现协议兼容和临时文件权限问题,推荐改用跨平台库:

EPPlus示例(适合.NET/.NET Core)

using OfficeOpenXml;

public static void botEdit(string editString, string dataSource, int x)
{
    try
    {
        // EPPlus 5+需设置许可证上下文
        ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
        
        using (var package = new ExcelPackage(new FileInfo(dataSource)))
        {
            var worksheet = package.Workbook.Worksheets.First();
            // 根据你的editString逻辑执行操作,示例:修改单元格值
            // worksheet.Cells["A1"].Value = "Updated Content";
            
            package.Save();
            if (x > 1)
            {
                MessageBox.Show("Done");
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
  • 其他可选库:NPOI,支持多种Excel格式,适合复杂数据操作。

3. 修正路径格式

SMB共享路径应为\\serverIP\共享文件夹名\fileName.xlsx,而非直接\\serverIP\fileName.xlsx——除非你将Ubuntu根目录设为共享(不推荐),否则路径格式错误会导致驱动找不到文件,进而触发“Failure creating file”错误。

4. 规避ACE驱动的临时文件限制

ACE驱动在访问网络共享文件时,需要在本地或共享目录创建临时文件,如果没有对应权限就会报错。改用跨平台库可以彻底绕过这个限制,无需依赖OLEDB的临时文件机制。

内容的提问来源于stack exchange,提问作者TREX 20

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 19:25:10