【发布时间】:2015-05-26 14:33:51
【问题描述】:
如何在不使用 OLEDB 连接的情况下使用 c#以 OpenXML 格式读取 xls 和 xlsx 文件。我正在寻找 Open XML 格式程序。
下面是我使用 OLEDB preocedure 的代码。但我正在寻找 OpenXML 格式。
public static DataTable ConvretExcelToDataTable(string FilePath)
{
string strConn = string.Empty;
if (FilePath.Trim().EndsWith(".xlsx"))
{
strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", FilePath);
}
else if (FilePath.Trim().EndsWith(".xls"))
{
strConn = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", FilePath);
}
OleDbConnection conn = null;
OleDbCommand cmd = null;
OleDbDataAdapter da = null;
DataTable dt = new DataTable();
try
{
conn = new OleDbConnection(strConn);
conn.Open();
cmd = new OleDbCommand(@"SELECT * FROM [Sheet1$]", conn);
cmd.CommandType = CommandType.Text;
da = new OleDbDataAdapter(cmd);
da.Fill(dt);
}
catch (Exception exc)
{
Console.WriteLine(exc.ToString());
Console.ReadLine();
}
finally
{
if (conn.State == ConnectionState.Open)
conn.Close();
conn.Dispose();
cmd.Dispose();
da.Dispose();
}
return dt;
}
要求是以OpenXML格式实现上述转换。谢谢。
【问题讨论】:
-
XLS 不是 OpenXML。因此,您不能使用 OpenXML SDK 来读取 XLS 文件。您只能将其用于 XLSX 文件。
-
我最近回答了一个类似的问题here
-
任何人请在上述评论中澄清我的疑问。谢谢。
-
你是对的,如果 Excel 不存在,代码将无法工作
-
如果目标机器没有安装 Office,上述 OLEDB 程序是否有效?请建议..