在.NET框架上用C#在oledb中创建文件失败

问题描述 投票:0回答:1

我正在尝试连接到 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);
    }
}

我得到了错误

创建文件失败

c# excel oledb
1个回答
0
投票

这永远不会在 Linux 上运行,即使在 Windows 上,也有更好的解决方案。您发布的内容尝试使用 OLEDB 驱动程序。 Linux 上没有 OLEDB。即使在 Windows 上,安装的驱动程序也必须与应用程序的位数(32/64 位)匹配。

有许多库可以创建 Excel 文件,其功能是 OLEDB 驱动程序无法实现的。

一方面,诸如EPPlusClosedXML之类的全功能库只需几行代码即可从列表或查询结果加载数据,格式化结果表,创建数据透视表和图表,例如:

var myList = GetList();

using(var package = new ExcelPackage(@"c:\temp\myWorkbook.xlsx"))
{
    var sheet = pck.Workbook.Worksheets["Sheet1"];
    var table=sheet.Cells["A1"].LoadFromCollection(myList, TableStyles.Medium3, true);

    package.Save();
}

另一方面,像Sylvan.Data.Excel这样的库非常快,使用很少的内存,但不允许任何格式化。创建 Excel 文件仍然很容易 :

using var edw = ExcelDataWriter.Create("data.xlsx");
DbDataReader dr = GetQueryResults("UserReport");
edw.Write(dr, "UserReport");
© www.soinside.com 2019 - 2024. All rights reserved.