Directorio de artículos
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!