如何在没有安装Office或任何第三方依赖项的情况下构buildExcel文件?

Windows窗体应用程序(C#),我们已经得到了基于.xlsx文件的导入文件。 我负责编写一个自动生成电子表格的新部分。 为它创build数据很容易(并完成)。 我有任何额外的信息,我需要创build电子表格,除了…

他们在第11个小时告诉我,Microsoft Office没有安装在服务器上,所以Microsoft.Office.Interop等不是解决scheme。 我同时发现,目标是以最小的影响做到这一点……所以如果我可以避免添加任何引用,那将是可取的; 它听起来不像在服务器上安装任何东西是一个选项。

我能够很好地parsing出一个.csv文件,但是事实certificate,select文件的代码只能查找.xlsx文件。 所以,即使我可以在Excel中打开它没有问题,这实际上并没有提供一个解决scheme。

因此,对于我所有的研究,我还没有find“我可以手动创build.xlsx文件吗?”这个问题的答案。 我想我最接近的是实际使用的oledb,但由于电子表格不存在于门外,所以每次我都去conn.open(); 在下面的代码中,它失败了。

有我自己创build这个文件的简单方法吗? 我知道.xlsx基本上是压缩XML,但我找不到任何参考,我可以看到什么标签我需要放在一个文件,然后如何正确地压缩它?

 string cnStr = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + filePathAndName + ";Persist Security Info=True;"; using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(cnStr)) { conn.Open(); System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(); cmd.CommandText = "CREATE TABLE [" + worksheetCategory + "] (SKU VARCHAR, FileName VARCHAR);"; cmd.ExecuteNonQuery(); foreach (string f in files) { string shortProductName = f.Substring(f.LastIndexOf("\\") + 1); shortProductName = shortProductName.Substring(0, shortProductName.IndexOf("_")); cmd.CommandText = "INSERT INTO [" + worksheetCategory + "](SKU, FileName) VALUES(" + shortProductName + "," + f + ");"; cmd.ExecuteNonQuery(); } conn.Close(); } 

你可以使用ado.net和OLEDB excel连接string。

但是,这是非常基本的阅读和写作。

对于我的最后一个项目,我使用了OpenXml 2.5,它是免费的,你可以从微软下载。 OpenXml将给你完全控制的Excel。 但是,有一个学习曲线。

另外,你不想使用com互操作。 这对于并行输出来说并不是最佳的,并且由于资源释放问题而总是出现故障。

我不知道是否考虑这个第三方,因为它是由微软实现的,但是用于Office的Open XML SDK将允许您在没有安装Excel的情况下读取和写入xlsx文件。

只需使用NuGet包DocumentFormat.OpenXml将其添加到您的项目中,无需“安装”它,只要确保在部署中包含所需的dll文件即可。