如何使用带有OpenXML格式的c#读取xls和xlsx文件而不使用OLEDB连接。我正在寻找Open XML格式的程序。
以下是我使用OLEDB预处理的代码。但我正在寻找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格式实现上述转换。感谢。
答案 0 :(得分:4)
您需要xlsx的OpenXml SDK:
http://www.microsoft.com/en-gb/download/details.aspx?id=30425
但对于XLS,您将无法使用此XLS格式不基于xml。
我使用NPOI库来访问旧文件:
NPOI库也支持xlsx,因此这将为您提供一致的访问方式。下行是您必须手动循环遍历工作表/行/列,并构建数据集,如果您有大型工作簿,这可能会影响性能。如果您想使用查询来访问数据,OLEDB是我找到的唯一方法。
答案 1 :(得分:2)
如果安装了Excel,则可以使用Microsoft.Office.Interop.Excel;
答案 2 :(得分:0)
从连接字符串中删除\
。你可以给出如下。
conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+filepath.ToString() + ";Extended Properties=Excel 12.0 Xml;");