Programación C #, un método para usar EPPlus para manipular archivos de Excel

1. La elección entre EPPlus y NPOI

1. Al importar y exportar datos en programas de escritorio, se manipularán archivos de Excel. Los controles de terceros más utilizados incluyen NPOI y EPPlus .
2. Comparada con NPOI, la API de EPPlus es más amigable y la capacidad de exportar datos es más poderosa que NPOI. Sin embargo, NPOI es aún más fuerte en la función de operar Excel ( comparación entre C #
NPOI exportando Excel y EPPlus exportando Excel
): 20 columnas, NPOI puede exportar 40,000 datos y exportar 50,000 datos cuando la memoria se desborda. EPPlus puede exportar más de 200.000 datos y desbordamiento de memoria al exportar 230.000 pruebas.

3. Si desea exportar Excel más complejo, puede usar NPOI, pero EPPlus básicamente satisface las necesidades generales.

2. Introducción básica de EPPlus

EPPlus es un formato de archivo que utiliza Open Office XML (xlsx), que puede leer y escribir Excel 2007/2010 y no es compatible con Excel 2003.
El componente de código abierto del archivo no requiere que Office esté instalado en la computadora al exportar Excel. Dirección del sitio web oficial: http://epplus.codeplex.com/ Si lo
usa, puede obtener directamente el dll correspondiente de NuGet.

puntos de función

Rango de celda, estilo de celda, borde, color, relleno, fuente, número, alineación), gráfico, imagen, forma, comentario, protección de tabla, cifrado, tabla dinámica, verificación de datos, formato condicional, cálculo de fórmula VBA

3. URL de referencia

Introducción
Introducción Los ejemplos de
atributos comúnmente usados
recomendaciones: EPLUS Uso Tutorial
simple Atributo
Uso avanzado

4. Instalación

instalación del administrador nuget

Inserte la descripción de la imagen aquí
Preste atención a los requisitos de la versión .net a la derecha
Inserte la descripción de la imagen aquí

5. Atención

Las instrucciones oficiales de EPPlus señalan que desde la 5ª edición, el acuerdo de código abierto ha cambiado, para uso comercial se requiere una licencia y el desarrollo personal se puede utilizar directamente a través de la configuración.
Si usa la última versión sin configuración, se informará un error.

Código fuente anterior a la versión 5

Código fuente de la versión 5

Método de configuración de licencia 1: use la propiedad LicenseContext en la clase ExcelPackage

ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
using(var package = new ExcelPackage(new FileInfo("MyWorkbook.xlsx")))
{
    
    
}

Método de configuración de licencia 2: app.config

<appSettings>
    <!--The license context used-->
    <add key="EPPlus:ExcelPackage.LicenseContext" value="NonCommercial" />
</appSettings>

6, lee el archivo

					//这里的文件选择对话框需要引用windows.forms程序集
 					OpenFileDialog ofd = new OpenFileDialog();
                    ofd.Filter = "Excel文件(*.xls;*.xlsx)|*.xls;*.xlsx|所有文件|*.*";//文件类型
                    ofd.FilterIndex = 2;//默认选择上面类型中的第几个,从左到右,从1开始。
                    ofd.Title = "选择具体的文件";//对话框左上角标题
                    ofd.InitialDirectory = @"D:\";//默认打开的文件夹
                    ofd.Multiselect = false;//是否允许选中多个文件
                    ofd.ValidateNames = true;//验证用户输入是否是一个有效的Windows文件名。
                    ofd.CheckPathExists = true;//验证路径有效性。
                    ofd.CheckFileExists = true;//验证文件有效性。
                    ofd.ShowHelp = true;//出现一个帮助按钮,自定义帮助信息。
                    if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
    
    
                        FilePath  = ofd.FileName;
					   //得到文件路径后,可以直接使用路径,也可以使用文件流的方式
		               //FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
		               //using (ExcelPackage package = new ExcelPackage(fs)
		                 
		                ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
		                using (ExcelPackage package = new ExcelPackage(new FileInfo(FilePath)))
		                {
    
    
		                	//whichsheet指sheet表序号,从0开始
		                    ExcelWorksheet sheet = package.Workbook.Worksheets[whichsheet];
		                    var rownum = sheet.Dimension.Rows;//总行
		                    var colnum = sheet.Dimension.Rows;//总列
		                   
		                    //int minColumnNum = sheet.Dimension.Start.Column;//工作区开始列
		                    //int maxColumnNum = sheet.Dimension.End.Column; //工作区结束列
		                    //int minRowNum = sheet.Dimension.Start.Row; //工作区开始行号
		                    //int maxRowNum = sheet.Dimension.End.Row; //工作区结束行号
							
							//strlist是临时定义的一个存放获取的单元格数值的列表
		                    strlist.Clear();
		                    for (int i = 1; i <= rownum; i++)
		                    {
    
    
		                        var contstr = sheet.Cells[$"A{i}"].Value;//A是指A列,这里对A列所有的行进行读值
		                        if (contstr == null)//单元格没数值是空值
		                        {
    
    
		                            strlist.Add(new GridValue(""));
		                            continue;
		                        }
		                        strlist.Add(new GridValue(sheet.Cells[$"A{i}"].Value.ToString()));
		                    }
		                }
                    }
                    

7, escribir archivos

            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
            using (ExcelPackage package = new ExcelPackage(new FileInfo(FilePath)))
            {
    
    
                ExcelWorksheet sheet = package.Workbook.Worksheets[0];
                var rownum = sheet.Dimension.Rows;
                var colnum = sheet.Dimension.Columns;
                for (int i = 1; i <= rownum; i++)
                {
    
    
                    sheet.Cells[$"A{i}"].Value = "要写入的数值";
                }
                sheet.Cells[rownum, colnum].AutoFitColumns(0);//尝试自动调整列的宽度,如果有合并单元格,则不起作用
                package.Save();
            }
            System.Windows.MessageBox.Show("保存成功。");

8. Atributos comunes

1. Propiedades del archivo, la propiedad Propiedades puede establecer algunas propiedades de Office

Inserte la descripción de la imagen aquí

2. Atributos de la hoja

sheet.DefaultColWidth = 10; //默认列宽
sheet.DefaultRowHeight = 30; //默认行高
sheet.TabColor = Color.Blue; //Sheet Tab的颜色
sheet.Cells.Style.WrapText = true; //单元格文字自动换行
sheet.Cells.AutoFitColumns(0);//自动调整所有列的宽度
sheet.Cells[rownum, colnum].AutoFitColumns(0);//自动调整指定范围内所有列的宽度

3. Especifique el estilo de la fila o columna (ancho, alto, oculto, ajuste de línea automático, formato de número, bloqueo, etc.)

sheet.Column(1).Width = 10;
sheet.Row(1).Height = 30;
sheet.Column(1).Hidden = true;
sheet.Row(1).Hidden = true;
sheet.Column(1).Style.WrapText = true;
sheet.Column(1).Style.Numberformat.Format = "$#,###.00";
sheet.Row(1).Style.Locked = true;

4. Clase ExcelRange de rango de celdas

//获取单元格范围的
public ExcelRange this[string Address] {
    
     get; }//Address是指"A1:C5"这种格式,如果没有字母,只是数字3:3表示整个第3行
public ExcelRange this[int Row, int Col] {
    
     get; }
public ExcelRange this[int FromRow, int FromCol, int ToRow, int ToCol] {
    
     get; }

//复制单元格:
public void Copy(ExcelRangeBase Destination);

//从二维数据集合中装载数据:
public ExcelRangeBase LoadFromCollection<T>(IEnumerable<T> Collection);
public ExcelRangeBase LoadFromDataReader(IDataReader Reader, bool PrintHeaders);
public ExcelRangeBase LoadFromText(FileInfo TextFile);
//这里的文件是指CSV文件
//数据装载时,会与ExcelRange的行列进行对应,将值设置到其中,这些单元格没有样式和数字格式

5, oficial

sheet.Cells[1, 3].range.Formula = "AVERAGE(A1, B1)";
sheet.Cells[1, 3].FormulaR1C1 = "AVERAGE(RC[-2], RC[-1])";
//以上两个公式表达意思相同——对于第一行,C列的值等于A列和B列的平均值

6. Celda

worksheet.Cells[1, 1].Value = "名称";//直接指定行列数进行赋值
worksheet.Cells["A1"].Value = "名称";//直接指定单元格进行赋值

Supongo que te gusta

Origin blog.csdn.net/qq_43307934/article/details/108549793
Recomendado
Clasificación