Excel到DataTable?不使用Microsoft.Office.Interop.Excel

时间:2013-12-13 11:06:06

标签: .net vb.net winforms excel epplus

我们的计算机上没有安装Microsoft Office。 我正在尝试读取excel文件并将其存储在数据集中,但我在

处收到错误
 Dim ws As Microsoft.Office.Interop.Excel.Worksheet
                        Dim Obj As Object

                        ws = DirectCast(workbook.Worksheets(1), Microsoft.Office.Interop.Excel.Worksheet) <---error here

错误:Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154.

我知道很可能机器上没有安装微软办公室。但是有替代方案吗?我试过Epplus,但是互联网上关于Epplus的大部分代码都在C#中,我无法使用developer fusion或telerik转换为vb。

有人可以提供一个简单的片段或什么来将Excel数据导入DataSet吗?谢谢。

2 个答案:

答案 0 :(得分:1)

您可以尝试NPOIMYXLS

  

编辑:为NPOI添加一些示例代码。

public static DataTable ExcelInput(string FilePath) 
    {            
        DataTable table = new DataTable();
        //Get the excel from filepath
        HSSFWorkbook workbook = new HSSFWorkbook(File.Open(FilePath, FileMode.Open));
        HSSFSheet sheet = (HSSFSheet)workbook.GetSheetAt(0);   

        //get Excel rows
        int rowsCount = sheet.PhysicalNumberOfRows;           

        int colsCount = sheet.GetRow(0).PhysicalNumberOfCells;

        for (int i = 0; i < colsCount; i++)
        {
            table.Columns.Add(i.ToString());
        }

        for (int x = 0; x < rowsCount; x++)
        {
            DataRow dr = table.NewRow();
            for (int y = 0; y < colsCount; y++)
            {
                dr[y] = sheet.GetRow(x).GetCell(y).ToString();
            }
            table.Rows.Add(dr);
        }

        sheet = null;
        workbook = null;
        return table;
    }

答案 1 :(得分:0)

确保在没有安装excel的情况下调用Excel interop时出错!

但要让你开始:Creating an Excel Workbook with VB.NET and ASP.NET