使用C#读写Excel文件(.xls/.xlsx)

6kkfgxo0  于 2023-02-05  发布在  C#
关注(0)|答案(7)|浏览(314)

如何在C#中读写Excel文件?我已将Excel对象库添加到项目中,但对于访问这些文件所需执行的操作,我没有得到足够清晰的描述。
请帮助我理解,在解释的时候,请记住我是一个新手,但我不是一个完全的新手。我学习了很多,所以我不是完全无知。

4zcjmb1e

4zcjmb1e1#

我非常喜欢使用EPPlus来执行这些类型的操作。EPPlus是一个库,你可以在你的项目中引用它,并在服务器上轻松地创建/修改电子表格。我用它来处理任何需要导出功能的项目。
Here's a nice blog entry that shows how to use the library,尽管库本身应该附带一些解释如何使用它的示例。
在我看来,第三方库比微软COM对象容易使用得多。我建议试一试。

v09wglhw

v09wglhw2#

我使用NPOI来满足我所有的Excel需求。
https://github.com/dotnetcore/NPOI
为许多常见的Excel任务提供了示例解决方案。

hmmo2u0o

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

68bkxrlz

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();

    }
  }
}
bkkx9g8r

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();
dwbf0jvd

dwbf0jvd6#

如果您想要易于使用的库,可以使用NUGET包

*ExcelDataReader-读取Excel文件(大多数文件格式)
*SwiftExcel-用于写入Excel文件(.xlsx)

请注意,这些都是第三方软件包-您可以免费使用它们的基本功能,但如果您想要更多的功能,可能有一个“专业”版本。
它们使用二维对象数组(即object[][] cells)来读/写数据。

rkttyhzu

rkttyhzu7#

如果你正在做简单的操作,并且可以把自己绑在xlsx上,那么你可以考虑自己操作XML。我已经做过了,发现它比研究excel库要快。
也有第三方库,可以更容易地使用...并可以在服务器上使用,MS的不能。

相关问题