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 文档。所以你应该试试别的。

看这个:Reading Excel files from C#

它可能会有所帮助!

更新:

来自上述链接的有用答案之一是:

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

您需要使用 Jet 或其他驱动程序来读取 xls 文件的内容,因为它不是 XML。此外,您可能需要考虑使用 Linq to Excel 之类的东西来查询内容,它的效果很好。

于 2013-06-17T12:22:55.773 回答