相关疑难解决方法(0)

将Excel表格读入DataTable的最佳/最快方式?

我在这里希望有人可以点我在正确的方向 - 我试图创建一个相当强大的实用程序来读取一个Excel工作表中的数据(可能的.xls或.xlsx)到一个DataTable尽快和瘦削如可能.

我在VB中想出了这个例程(尽管我对C#答案很满意):

Public Shared Function ReadExcelIntoDataTable(ByVal FileName As String, ByVal SheetName As String) As DataTable
    Dim RetVal As New DataTable

    Dim strConnString As String
    strConnString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & FileName & ";"

    Dim strSQL As String 
    strSQL = "SELECT * FROM [" & SheetName & "$]"

    Dim y As New Odbc.OdbcDataAdapter(strSQL, strConnString)

    y.Fill(RetVal)

    Return RetVal

End Function
Run Code Online (Sandbox Code Playgroud)

我想知道这是否是最好的方法,或者是否有更好/更有效的方式(或者只是更智能的方式 - 也许Linq /本地.Net提供商)来代替使​​用?

另外,只是一个快速而愚蠢的附加问题 - 我是否需要包含诸如y.Dispose()和/ y = Nothing或将要处理的代码,因为变量应该在例程结束时死掉,对吧?

谢谢!!

.net c# vb.net

36
推荐指数
5
解决办法
19万
查看次数

C#OPEN XML:从EXCEL到DATATABLE获取数据时跳过空单元格

任务

从数据导入excelDataTable

问题

将跳过不包含任何数据的单元格,并将具有该行中数据的下一个单元格用作空列的值.例如

A1是空的A2有一个值Tom,然后在导入数据A1得到的值A2A2保持空白

为了说清楚,我在下面提供一些屏幕截图

这是excel数据

在此输入图像描述

这是从excel导入数据后的DataTable 在此输入图像描述

public class ImportExcelOpenXml
{
    public static DataTable Fill_dataTable(string fileName)
    {
        DataTable dt = new DataTable();

        using (SpreadsheetDocument spreadSheetDocument = SpreadsheetDocument.Open(fileName, false))
        {

            WorkbookPart workbookPart = spreadSheetDocument.WorkbookPart;
            IEnumerable<Sheet> sheets = spreadSheetDocument.WorkbookPart.Workbook.GetFirstChild<Sheets>().Elements<Sheet>();
            string relationshipId = sheets.First().Id.Value;
            WorksheetPart worksheetPart = (WorksheetPart)spreadSheetDocument.WorkbookPart.GetPartById(relationshipId);
            Worksheet workSheet = worksheetPart.Worksheet;
            SheetData sheetData = workSheet.GetFirstChild<SheetData>();
            IEnumerable<Row> rows = sheetData.Descendants<Row>();

            foreach (Cell cell in rows.ElementAt(0))
            {
                dt.Columns.Add(GetCellValue(spreadSheetDocument, …
Run Code Online (Sandbox Code Playgroud)

c# datatable openxml spreadsheetml openxml-sdk

13
推荐指数
2
解决办法
1万
查看次数

如何将stream excel文件转换为datatable C#?

我使用Epplus从流中读取xlsx文件.

它有一个错误,它无法读取我的工作簿中的一些列.如何在没有epplus的情况下将xlsx文件从流读取到数据表?

我的旧代码:

 public static DataSet ReadExcelFile(Stream stream)
    {
        try
        {
            //2. Reading from a OpenXml Excel file (2007 format; *.xlsx)
            IExcelDataReader excelReader =    
                             ExcelReaderFactory.CreateOpenXmlReader(stream);
            //...
            DataSet result = excelReader.AsDataSet();

            return result;

        }
        catch (Exception x)
        {
            throw x;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我没有报告它,但我尝试了很多组合.如果工作表中有空列,epplus阅读器无法正确读取列值.

asp.net excel xlsx epplus

7
推荐指数
1
解决办法
2万
查看次数

EPPlus上的错误

我在项目中添加了EPPlus和OfficeOpenXml的使用.但是,当我运行我的项目时,我收到此错误并发出警告:

警告 :

The referenced assembly "EPPlus" could not be resolved because it has a dependency on "System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which is not in the currently targeted framework ".NETFramework,Version=v4.0,Profile=Client". Please remove references to assemblies not in the targeted framework or consider retargeting your project.
Run Code Online (Sandbox Code Playgroud)

错误:

The type or namespace name 'OfficeOpenXml' could not be found (are you missing a using directive or an assembly reference?)
The type or namespace name 'ExcelPackage' could not be found (are you missing a …
Run Code Online (Sandbox Code Playgroud)

c# epplus

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×3

epplus ×2

.net ×1

asp.net ×1

datatable ×1

excel ×1

openxml ×1

openxml-sdk ×1

spreadsheetml ×1

vb.net ×1

xlsx ×1