首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Open XML从C#中的Excel到DataTable

使用Open XML从C#中的Excel到DataTable,可以通过以下步骤完成:

  1. 安装Open XML SDK:在C#中,可以使用Open XML SDK来处理Excel文件。首先,需要安装Open XML SDK。可以通过NuGet包管理器来安装,或者从官方网站下载。
  2. 引入命名空间:在C#代码中,需要引入以下命名空间:
代码语言:csharp
复制
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using System.Data;
using System.Linq;
  1. 读取Excel文件:使用Open XML SDK,可以读取Excel文件中的数据,并将其转换为DataTable对象。以下是一个示例代码:
代码语言:csharp
复制
public static DataTable ReadExcelToDataTable(string filePath, string sheetName)
{
    DataTable dataTable = new DataTable();
    using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(filePath, false))
    {
        WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
        Sheet sheet = workbookPart.Workbook.Descendants<Sheet>().FirstOrDefault(s => s.Name == sheetName);
        if (sheet == null)
        {
            return null;
        }
        WorksheetPart worksheetPart = (WorksheetPart)workbookPart.GetPartById(sheet.Id);
        Worksheet workSheet = worksheetPart.Worksheet;
        SheetData sheetData = workSheet.GetFirstChild<SheetData>();
        Row row = sheetData.Descendants<Row>().FirstOrDefault();
        if (row == null)
        {
            return null;
        }
        foreach (Cell cell in row.Descendants<Cell>())
        {
            dataTable.Columns.Add(GetCellValue(spreadsheetDocument, cell));
        }
        foreach (Row dataRow in sheetData.Descendants<Row>().Skip(1))
        {
            DataRow newRow = dataTable.NewRow();
            int i = 0;
            foreach (Cell cell in dataRow.Descendants<Cell>())
            {
                newRow[i] = GetCellValue(spreadsheetDocument, cell);
                i++;
            }
            dataTable.Rows.Add(newRow);
        }
    }
    return dataTable;
}

private static string GetCellValue(SpreadsheetDocument document, Cell cell)
{
    SharedStringTablePart stringTablePart = document.WorkbookPart.SharedStringTablePart;
    if (cell.DataType != null && cell.DataType == CellValues.SharedString)
    {
        int index = int.Parse(cell.CellValue.Text);
        return stringTablePart.SharedStringTable.ChildElements[index].InnerText;
    }
    return cell.CellValue.Text;
}
  1. 调用方法:可以在C#代码中调用ReadExcelToDataTable方法,将Excel文件路径和工作表名称作为参数传递,将返回的DataTable对象进行处理。
代码语言:csharp
复制
string filePath = "path/to/excel/file.xlsx";
string sheetName = "Sheet1";
DataTable dataTable = ReadExcelToDataTable(filePath, sheetName);

通过以上步骤,可以使用Open XML从C#中的Excel到DataTable。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券