我正在尝试连接到 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);
}
}
我得到了错误
创建文件失败
这永远不会在 Linux 上运行,即使在 Windows 上,也有更好的解决方案。您发布的内容尝试使用 OLEDB 驱动程序。 Linux 上没有 OLEDB。即使在 Windows 上,安装的驱动程序也必须与应用程序的位数(32/64 位)匹配。
有许多库可以创建 Excel 文件,其功能是 OLEDB 驱动程序无法实现的。
一方面,诸如EPPlus或ClosedXML之类的全功能库只需几行代码即可从列表或查询结果加载数据,格式化结果表,创建数据透视表和图表,例如:
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");