2

DocumentFormat.OpenXml.Packaging.SpreadsheetDocumentクラスを使用して .xls/.csv ドキュメントを読み取るには?

.xlsxファイルを完全に読み取ることができます。ただしFileFormatException、xlsファイルが指定されている場合は、この行にあります。

_spreadsheetDocument = SpreadsheetDocument.Open(FileStream, false);
4

2 に答える 2

1

Open XML は、office 2007 以降の上位ファイル .docx、.xlsx、および .pptx のみを処理します。

また、.doc、.xls、.ppt などの Office 97-2003 ドキュメントとは互換性がありません。だから、何か他のことを試してみるべきです。

これを見てください: C# からの Excel ファイルの読み取り

それは役立つかもしれません!

アップデート:

上記のリンクからの有用な回答の1つは次のとおりです。

Dictionary<string, string> props = new Dictionary<string, string>();
props["Provider"] = "Microsoft.Jet.OLEDB.4.0";
props["Data Source"] = repFile;
props["Extended Properties"] = "Excel 8.0";

StringBuilder sb = new StringBuilder();
foreach (KeyValuePair<string, string> prop in props)
{
    sb.Append(prop.Key);
    sb.Append('=');
    sb.Append(prop.Value);
    sb.Append(';');
}
string properties = sb.ToString();

using (OleDbConnection conn = new OleDbConnection(properties))
{
    conn.Open();
    DataSet ds = new DataSet();
    string columns = String.Join(",", columnNames.ToArray());
    using (OleDbDataAdapter da = new OleDbDataAdapter(
        "SELECT " + columns + " FROM [" + worksheet + "$]", conn))
    {
        DataTable dt = new DataTable(tableName);
        da.Fill(dt);
        ds.Tables.Add(dt);
    }
}
于 2016-04-18T14:02:16.480 に答える
0

xls ファイルは XML ではないため、内容を読み取るには Jet またはその他のドライバーを使用する必要があります。さらに、Linq to Excel のようなものを使用してコンテンツをクエリすることを検討することもできます。これはうまく機能します。

于 2013-06-17T12:22:55.773 に答える