Как читать файлы xls и xlsx с помощью С#
Как читать файлы xls и xlsx с помощью С# с форматом OpenXML Без использования соединения 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. Спасибо.
Ответы
Ответ 1
Вам понадобится SDK OpenXml для xlsx:
http://www.microsoft.com/en-gb/download/details.aspx?id=30425
Но для XLS вы не сможете использовать этот формат XLS не на основе xml.
Я использую библиотеку NPOI для доступа к старым файлам:
http://npoi.codeplex.com/
Библиотека NPOI также поддерживает xlsx, поэтому это даст вам последовательный способ доступа к ним. Внизу вам придется вручную прокручивать листы/строки/столбцы и создавать набор данных, который, вероятно, повлияет на производительность, если у вас большие книги. Если вы хотите использовать запросы для доступа к данным, OLEDB - единственный метод, который я нашел.
Ответ 2
Если у вас установлен Excel, вы можете использовать Microsoft.Office.Interop.Excel;
http://support.microsoft.com/kb/302084
Ответ 3
Удалите \
из строки подключения. Вы можете указать ниже.
conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+filepath.ToString() + ";Extended Properties=Excel 12.0 Xml;");