[Software de Office] C# llama a NPOI para implementar las funciones de carga y exportación de archivos de Excel


1. Introducción

Este artículo presentará cómo utilizar las bibliotecas C# y NPOI para implementar operaciones de lectura y escritura de archivos de Excel y encapsularlas mediante botones para cargar y exportar archivos. NPOI es una poderosa biblioteca .NET que puede manejar fácilmente archivos de Excel. Aprenderemos cómo usar NPOI para abrir un archivo de Excel existente, leer datos y escribir datos en el archivo de Excel.

2. Preparación del entorno

Antes de comenzar, asegúrese de tener instalados los siguientes entornos:

  • Visual Studio (cualquier versión)
  • Biblioteca NPOI

3. Código de muestra

El siguiente es un código de muestra que demuestra cómo usar C# y NPOI para implementar operaciones de lectura y escritura en archivos de Excel, encapsularlas en funciones y agregar botones para cargar archivos y exportarlos:

using System;
using System.Data;
using System.IO;
using System.Windows.Forms;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;

class Program
{
    
    
    static void Main(string[] args)
    {
    
    
        Application.Run(new Form1());
    }
}

public class Form1 : Form
{
    
    
    private Button loadButton;
    private Button exportButton;
    private DataTable dataTable;

    public Form1()
    {
    
    
        loadButton = new Button();
        loadButton.Text = "加载文件";
        loadButton.Click += LoadButton_Click;

        exportButton = new Button();
        exportButton.Text = "导出文件";
        exportButton.Click += ExportButton_Click;

        Controls.Add(loadButton);
        Controls.Add(exportButton);
    }

    private void LoadButton_Click(object sender, EventArgs e)
    {
    
    
        OpenFileDialog openFileDialog = new OpenFileDialog();
        openFileDialog.Filter = "Excel文件 (*.xlsx)|*.xlsx";
        openFileDialog.Title = "选择要加载的Excel文件";

        if (openFileDialog.ShowDialog() == DialogResult.OK)
        {
    
    
            string filePath = openFileDialog.FileName;
            dataTable = LoadExcelFile(filePath);
        }
    }

    private void ExportButton_Click(object sender, EventArgs e)
    {
    
    
        if (dataTable == null)
        {
    
    
            MessageBox.Show("请先加载Excel文件!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            return;
        }

        SaveFileDialog saveFileDialog = new SaveFileDialog();
        saveFileDialog.Filter = "Excel文件 (*.xlsx)|*.xlsx";
        saveFileDialog.Title = "选择要导出的Excel文件路径";

        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
    
    
            string filePath = saveFileDialog.FileName;
            ExportExcelFile(filePath, dataTable);
        }
    }

    private DataTable LoadExcelFile(string filePath)
    {
    
    
        DataTable dataTable = new DataTable();
        FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read);
        XSSFWorkbook workbook = new XSSFWorkbook(file);
        ISheet sheet = workbook.GetSheetAt(0);

        // 读取表头
        IRow headerRow = sheet.GetRow(0);
        for (int i = 0; i < headerRow.LastCellNum; i++)
        {
    
    
            dataTable.Columns.Add(headerRow.GetCell(i).ToString());
        }

        // 读取数据
        for (int row = 1; row <= sheet.LastRowNum; row++)
        {
    
    
            IRow currentRow = sheet.GetRow(row);
            DataRow dataRow = dataTable.NewRow();
            for (int col = 0; col < currentRow.LastCellNum; col++)
            {
    
    
                dataRow[col] = currentRow.GetCell(col)?.ToString();
            }
            dataTable.Rows.Add(dataRow);
        }

        file.Close();
        Console.WriteLine("加载文件完成!");
        return dataTable;
    }

    private void ExportExcelFile(string filePath, DataTable dataTable)
    {
    
    
        XSSFWorkbook workbook = new XSSFWorkbook();
        ISheet sheet = workbook.CreateSheet("Sheet1");

        // 写入表头
        IRow headerRow = sheet.CreateRow(0);
        for (int i = 0; i < dataTable.Columns.Count; i++)
        {
    
    
            headerRow.CreateCell(i).SetCellValue(dataTable.Columns[i].ColumnName);
        }

        // 写入数据
        for (int row = 0; row < dataTable.Rows.Count; row++)
        {
    
    
            IRow newRow = sheet.CreateRow(row + 1);
            for (int col = 0; col < dataTable.Columns.Count; col++)
            {
    
    
                newRow.CreateCell(col).SetCellValue(dataTable.Rows[row][col]?.ToString());
            }
        }

        FileStream writeFile = new FileStream(filePath, FileMode.Create, FileAccess.Write);
        workbook.Write(writeFile);
        writeFile.Close();

        Console.WriteLine("导出文件完成!");
    }
}

4. Resultados

Después de ejecutar el código, podrá seleccionar el archivo de Excel para cargar mediante el botón Cargar archivo y mostrar los datos del archivo en la consola. Al mismo tiempo, también puede seleccionar la ruta del archivo de Excel que se exportará mediante el botón exportar archivo y escribir los datos en el archivo.

5. Resumen

Este artículo presenta cómo usar la biblioteca C# y NPOI para implementar operaciones de lectura y escritura de archivos de Excel, y las encapsula mediante botones para cargar archivos y exportarlos. Al utilizar la API de NPOI, podemos procesar fácilmente archivos de Excel, leer los datos que contienen y escribirlos. ¡Espero que este artículo te ayude!

Supongo que te gusta

Origin blog.csdn.net/qq_38628970/article/details/134153111
Recomendado
Clasificación