如何在C#中读写Excel文件?我已将Excel对象库添加到项目中,但对于访问这些文件所需执行的操作,我没有得到足够清晰的描述。请帮助我理解,在解释的时候,请记住我是一个新手,但我不是一个完全的新手。我学习了很多,所以我不是完全无知。
4zcjmb1e1#
我非常喜欢使用EPPlus来执行这些类型的操作。EPPlus是一个库,你可以在你的项目中引用它,并在服务器上轻松地创建/修改电子表格。我用它来处理任何需要导出功能的项目。Here's a nice blog entry that shows how to use the library,尽管库本身应该附带一些解释如何使用它的示例。在我看来,第三方库比微软COM对象容易使用得多。我建议试一试。
v09wglhw2#
我使用NPOI来满足我所有的Excel需求。https://github.com/dotnetcore/NPOI为许多常见的Excel任务提供了示例解决方案。
hmmo2u0o3#
您可以使用Excel自动化(它基本上是一个COM基础的东西),例如:
Excel.Application xlApp ; Excel.Workbook xlWorkBook ; Excel.Worksheet xlWorkSheet ; xlApp = new Excel.ApplicationClass(); xlWorkBook = xlApp.Workbooks.Open("1.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
Link to the full tutorial
68bkxrlz4#
简单而强大的解决方案是**ClosedXML**库。它非常简单地读取和写入一个“关闭”的Excel文件的单元格,主要逻辑如下:
using Excel = ClosedXML.Excel; namespace Excel_Tests { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //create 'workbook' object var wb = new Excel.XLWorkbook("E:\\test1.xlsx"); //create 'worksheet' object var ws = wb.Worksheets.Worksheet("Sheet1"); //read cells var a = ws.Cell("A1").Value; var b = ws.Cell("B1").Value; Console.WriteLine(a.ToString()); Console.WriteLine(b.ToString()); //write cells ws.Cell("F2").Value = 9999999; ws.Cell("F2").Value = 2.333; ws.Cell("G2").Value = "This is cell G2"; wb.Save(); } } }
bkkx9g8r5#
**Reading the Excel File:** string filePath = @"d:\MyExcel.xlsx"; Excel.Application xlApp = new Excel.Application(); Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(filePath); Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); Excel.Range xlRange = xlWorkSheet.UsedRange; int totalRows = xlRange.Rows.Count; int totalColumns = xlRange.Columns.Count; string firstValue, secondValue; for (int rowCount = 1; rowCount <= totalRows; rowCount++) { firstValue = Convert.ToString((xlRange.Cells[rowCount, 1] as Excel.Range).Text); secondValue = Convert.ToString((xlRange.Cells[rowCount, 2] as Excel.Range).Text); Console.WriteLine(firstValue + "\t" + secondValue); } xlWorkBook.Close(); xlApp.Quit(); **Writting the Excel File:** Excel.Application xlApp = new Excel.Application(); object misValue = System.Reflection.Missing.Value; Excel.Workbook xlWorkBook = xlApp.Workbooks.Add(misValue); Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); xlWorkSheet.Cells[1, 1] = "ID"; xlWorkSheet.Cells[1, 2] = "Name"; xlWorkSheet.Cells[2, 1] = "100"; xlWorkSheet.Cells[2, 2] = "John"; xlWorkSheet.Cells[3, 1] = "101"; xlWorkSheet.Cells[3, 2] = "Herry"; xlWorkBook.SaveAs(filePath, Excel.XlFileFormat.xlOpenXMLWorkbook, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); xlWorkBook.Close(); xlApp.Quit();
dwbf0jvd6#
如果您想要易于使用的库,可以使用NUGET包:
*ExcelDataReader-读取Excel文件(大多数文件格式)*SwiftExcel-用于写入Excel文件(.xlsx)
请注意,这些都是第三方软件包-您可以免费使用它们的基本功能,但如果您想要更多的功能,可能有一个“专业”版本。它们使用二维对象数组(即object[][] cells)来读/写数据。
object[][] cells
rkttyhzu7#
如果你正在做简单的操作,并且可以把自己绑在xlsx上,那么你可以考虑自己操作XML。我已经做过了,发现它比研究excel库要快。也有第三方库,可以更容易地使用...并可以在服务器上使用,MS的不能。
7条答案
按热度按时间4zcjmb1e1#
我非常喜欢使用EPPlus来执行这些类型的操作。EPPlus是一个库,你可以在你的项目中引用它,并在服务器上轻松地创建/修改电子表格。我用它来处理任何需要导出功能的项目。
Here's a nice blog entry that shows how to use the library,尽管库本身应该附带一些解释如何使用它的示例。
在我看来,第三方库比微软COM对象容易使用得多。我建议试一试。
v09wglhw2#
我使用NPOI来满足我所有的Excel需求。
https://github.com/dotnetcore/NPOI
为许多常见的Excel任务提供了示例解决方案。
hmmo2u0o3#
您可以使用Excel自动化(它基本上是一个COM基础的东西),例如:
Link to the full tutorial
68bkxrlz4#
简单而强大的解决方案是**ClosedXML**库。它非常简单地读取和写入一个“关闭”的Excel文件的单元格,主要逻辑如下:
bkkx9g8r5#
dwbf0jvd6#
如果您想要易于使用的库,可以使用NUGET包:
*ExcelDataReader-读取Excel文件(大多数文件格式)
*SwiftExcel-用于写入Excel文件(.xlsx)
请注意,这些都是第三方软件包-您可以免费使用它们的基本功能,但如果您想要更多的功能,可能有一个“专业”版本。
它们使用二维对象数组(即
object[][] cells
)来读/写数据。rkttyhzu7#
如果你正在做简单的操作,并且可以把自己绑在xlsx上,那么你可以考虑自己操作XML。我已经做过了,发现它比研究excel库要快。
也有第三方库,可以更容易地使用...并可以在服务器上使用,MS的不能。