【发布时间】:2015-03-03 11:31:35
【问题描述】:
(替代标题:ReadAllLines Analogue for Excel?:加载和操作 Excel 数据的最佳方法是什么?)
我想快速打开一个 Excel 表格并执行文本操作。我希望该操作像 ReadAllLines (https://msdn.microsoft.com/en-us/library/s2tte0y1(v=vs.110).aspx) 一样工作,但适用于 Excel。
我发现了以下问题,但该问题已有 7 年历史。 Reading Excel files from C# (此外,这是一个具有历史意义的问题,已被冻结。此外,我没有 50 分,所以如果它打开,我将无法发表评论。)我将 Robin Robinson 的答案剪切并粘贴到 Visual Studio 中,仅更改路径:
var fileName = string.Format("{0}\\fileNameHere", Directory.GetCurrentDirectory());
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, "anyNameHere");
var data = ds.Tables["anyNameHere"].AsEnumerable();
var query = data.Where(x => x.Field<string>("id") != string.Empty).Select(x =>
new
{
id= x.Field<string>("id"),
});
Fill 方法失败,“外部表不是预期格式”。
今天优秀的程序员都这样做吗?即,我应该调查 Jet 并查看是否有针对最新 Excel 的更新,还是有新的改进方法?
【问题讨论】:
-
除了“似乎不起作用”之外,您没有说明发生了什么。它完全有可能将工作,但您遇到了配置失败。与其提出一个新的模糊问题,不如在现有答案中添加评论。我知道您还没有足够的代表发表评论 - 但这并不意味着提出一个糟糕的问题是正确的前进方向。
-
谢谢 - 但我不是在寻找您来解决问题。我问的是近七年后是否推荐这种做法。如果是,那么我会担心它为什么不起作用。我将通过这些 cmets 改进问题。
-
老实说,我认为这不太可能成为一个很好的主题问题。
-
谢谢,乔恩。这就是我的目标:我想快速拉入一个 Excel 文件以供控制台应用程序操作。有 LINQ to XML、LINQ to SQL,我有点期待 LINQ to Excel。 OLEDB是最好的方法吗?和数据集?似乎有更现代的东西。
-
我可能会使用 Excel 互操作 API:msdn.microsoft.com/en-us/library/…
标签: c# excel-2013