C#を使用してxlsおよびxlsxファイルを読み取る方法OLEDB接続を使用せずにOpenXML形式で。 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形式で実装することです。ありがとう。
Xlsx用のOpenXmlSDKが必要になります。
http://www.Microsoft.com/en-gb/download/details.aspx?id=30425
ただし、XLSの場合、これを使用することはできません。XLS形式はxmlに基づいていません。
古いファイルにアクセスするためにNPOIライブラリーを使用します。
NPOIライブラリーはxlsxもサポートしているため、これらにアクセスするための一貫した方法が提供されます。欠点は、シート/行/列を手動でループし、データセットを構築する必要があることです。これは、大きなワークブックがある場合にパフォーマンスに影響を与える可能性があります。クエリを使用してデータにアクセスする場合は、OLEDBが私が見つけた唯一の方法です。
Excelがインストールされている場合は、Microsoft.Office.Interop.Excelを使用できます。
削除する \
接続文字列から。以下のように与えることができます。
conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+filepath.ToString() + ";Extended Properties=Excel 12.0 Xml;");