gpt4 book ai didi

c# - 如何读取 XLSX (Excel)?

转载 作者:IT王子 更新时间:2023-10-29 04:48:31 27 4
gpt4 key购买 nike

我在读取 .xlsx (Excel) 文件时遇到问题。我尝试使用:

var fileName = @"C:\automated_testing\ProductsUploadTemplate-2015-10-22.xlsx";
var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);

var adapter = new OleDbDataAdapter("SELECT * FROM [workSheetNameHere$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds, "XLSData");
DataTable data = ds.Tables["XLSData"];

// ... Loop over all rows.
StringBuilder sb = new StringBuilder();
foreach (DataRow row in data.Rows)
{
sb.AppendLine(string.Join(",", row.ItemArray));
}

但如果由于 connectionString 而失败。所以我更新了支持 .xlsx 的行:

var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;", fileName);

但我得到:

The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.

(这里的问题是,我无法在我的远程测试机器上安装新软件,所以我无法修复它,需要找到其他解决方案。)

我还需要确保导入的数据将以某种简单的方式存储(我是初级程序员),以便让我遍历它,即用行的数据创建对象。

我检查的其他方法:

评论:似乎对我有用,但不支持未知尺寸(随机行数和列数)的 Excel 文件。

评论:不支持设置与第一行不同行的列名称(在我的一些 Excel 文件中,第一行 4-6 有评论,然后是标题行和下面的数据)。

评论:同上问题。

评论:下载的包重量超过60MB,需要我在系统上安装,这在我的情况下是不可能的。无论如何,人们评论说它被限制在 150 行。

与此同时,我会尝试检查 https://code.google.com/p/linqtoexcel/ ,但我们非常欢迎所有其他想法!

编辑:刚刚检查了 LinqToExcel,与上面相同的问题:

The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.

EDIT2:最终,这个解决方案似乎解决了我的问题:

https://stackoverflow.com/a/19065266/3146582

最佳答案

如果是从Excel文件中读取数据,可以使用EPPlus NuGet包,使用如下代码:

//using OfficeOpenXml;
using (ExcelPackage xlPackage = new ExcelPackage(new FileInfo(@"C:\YourDirectory\sample.xlsx")))
{
var myWorksheet = xlPackage.Workbook.Worksheets.First(); //select sheet here
var totalRows = myWorksheet.Dimension.End.Row;
var totalColumns = myWorksheet.Dimension.End.Column;

var sb = new StringBuilder(); //this is your data
for (int rowNum = 1; rowNum <= totalRows; rowNum++) //select starting row here
{
var row = myWorksheet.Cells[rowNum, 1, rowNum, totalColumns].Select(c => c.Value == null ? string.Empty : c.Value.ToString());
sb.AppendLine(string.Join(",", row));
}
}

关于c# - 如何读取 XLSX (Excel)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33302235/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com