是否有任何易于实现的库可用于读取excel文件,以后可能会创建它们? 这是我最好的选择吗?
答案 0 :(得分:5)
试试这个:http://epplus.codeplex.com
EPPlus是一个读取和写入Excel 2007/2010文件的.net库 使用Open Office Xml格式(xlsx)。
答案 1 :(得分:4)
如果您愿意承诺使用更高版本的Excel(2007+),您还可以查看OpenXML SDK。它是免费的,不会让你在运行它的机器上安装MS Office,并且有很多关于如何在线使用它的资源available(including blogs from the OpenXML team)。
答案 2 :(得分:3)
答案 3 :(得分:1)
您可以使用ExcelLibrary,虽然它仅适用于2003格式的.xls
该项目的目的是提供一个本机.NET解决方案,用于创建,读取和修改Excel文件,而无需使用COM互操作或OLEDB连接。
我有机会使用EPPLUS,这很精彩:),适用于2007/2010年使用的新excel格式.xlsx
EPPlus是一个.net库,你可以读写excel文件,创建图表,图片,形状......还有更多
另请查看此SO post
答案 4 :(得分:1)
我使用过oledb,interop,刚开始使用Epplus。到目前为止,epplus被证明是最简单的。 http://epplus.codeplex.com/
但是,我刚刚发布了一个与epplus有关的问题,但我发布了一些你可以用作参考的代码。
答案 5 :(得分:0)
我曾经工作的公司对此进行了大量研究,并决定SoftArtisans的产品是他们最好的选择: OfficeWriter
我总是觉得奇怪的是,对Excel阅读和写作的支持是多么微弱。我很确定如果您使用Microsoft的库,您必须安装Excel,这就像OfficeWriter一样需要额外费用。
答案 6 :(得分:0)
您可以选择VBA或使用FileHelpers中的免费库。如果您打算购买一些商业解决方案,我建议ASPOSE
答案 7 :(得分:0)
根据this website,您需要包含对Microsoft Excel 12.0对象库的引用。从那里,你需要做一些事情来打开文件。网站上有一个代码示例。
PS - 对不起,它不是太详细,但我找不到Microsoft Office开发人员参考的详细信息。
答案 8 :(得分:0)
我使用了ExcelLibrary,效果非常好! (到目前为止它支持Excel 2003或更低版本)。
答案 9 :(得分:0)
我喜欢使用ExcelDataReader进行阅读,并使用前面提到的EPPlus进行写作。 Here's an example。
这是一个用它阅读的例子:
FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);
// Reading from a binary Excel file ('97-2003 format; *.xls)
// IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
// Reading from a OpenXml Excel file (2007 format; *.xlsx)
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
// DataSet - The result of each spreadsheet will be created in the result.Tables
DataSet result = excelReader.AsDataSet();
// Free resources (IExcelDataReader is IDisposable)
excelReader.Close();
var cdm = new ValueSetRepository();
for (int i = 0; i < result.Tables.Count; i++)
{
// CHECK if tableNames filtering is specified
if (tableNames != null)
{
// CHECK if a table matches the specified tablenames
var tablename = result.Tables[i].TableName;
if (!tableNames.Contains(tablename))
{
continue;
}
}
var lookup = new ValueSetLookup();
lookup.CmsId = result.Tables[i].Rows[2][0].ToString();
lookup.NqfNumber = result.Tables[i].Rows[2][1].ToString();
lookup.Data = new List<ValueSetAttribute>();
int row_no = 2;
while (row_no < result.Tables[i].Rows.Count) // i is the index of table
// (sheet name) which you want to convert to csv
{
var currRow = result.Tables[i].Rows[row_no];
var valueSetAttribute = new ValueSetAttribute()
{
Id = currRow[0].ToString(),
Number = currRow[1].ToString(),
tName = currRow[2].ToString(),
Code = currRow[7].ToString(),
Description = currRow[8].ToString(),
};
lookup.Data.Add(valueSetAttribute);
row_no++;
}
cdm.AddRecord(lookup);
答案 10 :(得分:0)
是的,存在多个开放源代码库,以帮助使用C#读取和/或编写Excel电子表格。
以下是C#库的简短列表:
维护了最新的策划列表here。
示例:使用ExcelMapper读取Excel文件
a。通过在NuGet Packet Manager中运行以下命令,使用NuGet进行安装:
Install-Package ExcelMapper
b。 ExcelMapper的示例C#代码
public void ReadExcelUsingExcelMapperExtension()
{
string filePath = @"C:\Temp\ListOfPeople.xlsx";
var people = new ExcelMapper(filePath).Fetch<Person>().ToList();
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
免责声明:我喜欢ExcelMapper的简洁性,因此包含了此程序包的示例代码。要使用其他库执行相同的操作,需要更多代码。