如何在C#中读取Excel文件而不使用Microsoft.Office.Interop.Excel库

50
我有一个用C#编写的.Net-Windows应用程序,需要打开并处理Excel文件。如何在不使用Microsoft.Office.Interop.Excel库的情况下完成这一操作?
12个回答

0

如果您不想使用Interop,您可以尝试OfficeWriter。根据您需要在文件上进行多少处理,这可能有些过度杀伤力。您可以请求免费试用。文档站点提供了完整的API文档。

免责声明:我是最新版本的工程师之一。


-1
对于需要的人来说,可以在没有安装Office的情况下使用Interop.Excel打开Excel。你可以通过NuGet添加Interop.Excel。
public DataTable ReadExcel(string fileName)
    {
        Excel.Application FExcelObject = new Excel.Application();

        var FWorkbookObject = FExcelObject.Workbooks.Open(fileName,
                Type.Missing,
                Type.Missing,
                Type.Missing,
                Type.Missing,
                Type.Missing,
                Type.Missing,
                Type.Missing,
                Type.Missing,
                Type.Missing,
                Type.Missing,
                Type.Missing,
                Type.Missing);
        //var sheets = FWorkbookObject.Sheets[1];
        foreach (Excel.Worksheet sheets in FWorkbookObject.Sheets)
        {
            System.Data.DataTable dt = new System.Data.DataTable(sheets.Name);
            DataRow dr;
            StringBuilder sb = new StringBuilder();
            int jValue = sheets.UsedRange.Cells.Columns.Count;
            int iValue = sheets.UsedRange.Cells.Rows.Count;
            for (int j = 1; j <= jValue; j++)
            {
                dt.Columns.Add("column" + j, System.Type.GetType("System.String"));
            }
            for (int i = 1; i <= iValue; i++)
            {
                dr = dt.NewRow();
                for (int j = 1; j <= jValue; j++)
                {
                    var oRng = (Microsoft.Office.Interop.Excel.Range)sheets.Cells[i, j];
                    string strValue = oRng.Text.ToString();
                    dr["column" + j] = strValue;
                }
                dt.Rows.Add(dr);
            }
            return dt;
        }
        return new DataTable();
    }
}

那只是用来在没有安装 Excel 的情况下编译代码,但你不能运行它。 - Christoph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接