无需互操作即可将xls转换为xlsx

我的公司networking上有一台没有安装办公室的电脑(实际上有几台机器)。 我需要开发一个vb.net程序,它将parsing通常为.xls格式的电子表格中的信息。 我不觉得有没有许多选项可以从.xls文档中读取数据,而不需要interop。 如果是的话,有什么select?

如果我甚至可以在没有interop的情况下以编程方式将.xls转换为.xlsx,那也是一个选项。 然后我可以使用ClosedXML从xlsxparsing。 或者有没有办法用ClosedXML读取.xls文件,我没有看到?

任何帮助将是伟大的,因为我无法find这个答案。

您不需要使用com interop从Excel文件读取。 您可以使用OleDb(尽pipe您可能需要安装Office数据连接组件 )

Imports System.Data.OleDb: Public Shared Function ReadExcelWorkSheet(ByVal sheetName As String, ByVal connectionString As String) As DataTable Dim sql As String = String.Format("SELECT * FROM [{0}$]", sheetName) Dim dt = New DataTable() Using conn As OleDbConnection = New OleDbConnection(connectionString) Using cmd = New OleDbCommand(sql, conn) conn.Open() Using adapter = New OleDbDataAdapter(cmd) adapter.Fill(dt) End Using End Using conn.Close() End Using Return dt End Function 

连接string用于xlsx文件:

 Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES"; 

或为xls文件:

 Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myOldExcelFile.xls;Extended Properties="Excel 8.0;HDR=YES"; 

这里的连接string的更多信息

您可以通过ADO.Net阅读它。 我需要看看你现有的代码,但是这应该允许你在没有Excel的情况下打开它。

 System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx; Extended Properties='Excel 12.0 Xml;HDR=YES';")