C#导出Excel表格,实现跨行/跨列...支持各种组合样式

devtools/2024/10/9 11:18:48/

C#生成Excel跨行/跨列…支持各种样式

效果示例

基本能满足各种样式需求
在这里插入图片描述

安装包

首先在项目中安装包:DocumentFormat.OpenXml
在这里插入图片描述

使用

部分使用方法

		//Cells[3, 1, 3, 2]:这是用于指定 Excel 单元格的范围。//3, 1:表示开始的单元格,位于第 3 行,第 1 列。//3, 2:表示结束的单元格,位于第 3 行,第 2 列。// 合并 [2,1] 到 [3,1],使船名占两行一列worksheet.Cells[2, 1, 3, 1].Merge = true;// 设置水平和垂直居中对齐worksheet.Cells[2, 1].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;worksheet.Cells[2, 1].Style.VerticalAlignment = ExcelVerticalAlignment.Center;// 设置单元格边框(注意边框区域和字体设置)worksheet.Cells[2, 1, 3, 1].Style.Border.BorderAround(ExcelBorderStyle.Thin, System.Drawing.Color.Black);// 设置字体为华文楷体worksheet.Cells[2, 1].Style.Font.Name = "华文楷体";//这行代码的作用是启用单元格中的自动换行功能。worksheet.Cells[3, 1].Style.WrapText = true; //字体加粗worksheet.Cells[2, 1, 3, 21].Style.Font.Bold = true;// 冻结前三行----在第四行和第一列的位置冻结窗格worksheet.View.FreezePanes(4, 1);// 冻结左边四列---从第一行和第五列开始滚动,因此左边的四列(1到4列)会被固定worksheet.View.FreezePanes(1, 5);// 冻结前三行和左边四列--组合使用worksheet.View.FreezePanes(4, 5);// 设置背景颜色worksheet.Cells[3, 20].Style.Fill.PatternType = ExcelFillStyle.Solid;                      // 设置填充类型为实心worksheet.Cells[3, 20].Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("#fce4d6")); // 设置背景颜色为 #fce4d6//设置行高度worksheet.Row(1).Height = 50;// 自动调整列宽foreach (var col in worksheet.Columns){col.AutoFit();}//设置列宽度worksheet.Column(3).Width = 13;

后端代码

using Microsoft.Extensions.Hosting;
using OfficeOpenXml;
using OfficeOpenXml.Style;
using System.Drawing;private readonly TokenBLL _tokenBLL;private IHostEnvironment _hostingEnvironment;public WharfInfoBLL(TokenBLL tokenBLL, IHostEnvironment hostingEnvironment){_hostingEnvironment = hostingEnvironment;_tokenBLL = tokenBLL;}/// <summary>/// 测试Excel/// </summary>/// <param name="json">前端参数集成json</param>/// <returns>数据集</returns> public object ExportToExcel(string json){ExcelPackage.LicenseContext = LicenseContext.NonCommercial;using (var package = new ExcelPackage()){// 创建一个新的工作表var worksheet = package.Workbook.Worksheets.Add("ReportSummary");worksheet.Cells[1, 1, 1, 5].Merge = true;worksheet.Cells[1, 1].Value = "测试Excel";worksheet.Cells[1, 1].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;worksheet.Cells[1, 1].Style.VerticalAlignment = ExcelVerticalAlignment.Center;worksheet.Cells[1, 1].Style.Font.Size = 14;worksheet.Cells[1, 1].Style.Font.Name = "华文仿宋";worksheet.Cells[1, 1].Style.Font.Bold = true;worksheet.Cells[2, 1].Merge = true;worksheet.Cells[2, 1].Value = "一行一列";worksheet.Cells[2, 1].Style.Border.BorderAround(ExcelBorderStyle.Thin, System.Drawing.Color.Black);worksheet.Cells[2, 2, 2, 3].Merge = true;worksheet.Cells[2, 2, 2, 3].Value = "合并2列";worksheet.Cells[2, 2, 2, 3].Style.Border.BorderAround(ExcelBorderStyle.Thin, System.Drawing.Color.Black);worksheet.Cells[2, 4, 3, 5].Merge = true;worksheet.Cells[2, 4, 3, 5].Value = "合并2行";worksheet.Cells[2, 1, 2, 2].Style.Border.BorderAround(ExcelBorderStyle.Thin, System.Drawing.Color.Black);worksheet.Cells[3, 1, 3, 3].Merge = true;worksheet.Cells[3, 1, 3, 3].Value = "变背景色";worksheet.Cells[3, 1, 3, 3].Style.Border.BorderAround(ExcelBorderStyle.Thin, System.Drawing.Color.Black);// 设置背景颜色worksheet.Cells[3, 1, 3, 3].Style.Fill.PatternType = ExcelFillStyle.Solid;worksheet.Cells[3, 1, 3, 3].Style.Fill.BackgroundColor.SetColor(ColorTranslator.FromHtml("#fce4d6"));//整体样式worksheet.Cells[2, 1, 3, 5].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;worksheet.Cells[2, 1, 3, 5].Style.VerticalAlignment = ExcelVerticalAlignment.Center;worksheet.Cells[2, 1, 3, 5].Style.Font.Name = "华文楷体";worksheet.Cells[2, 1, 3, 5].Style.WrapText = true;// 冻结前一行和左边一列worksheet.View.FreezePanes(2, 2);worksheet.Row(1).Height = 50;worksheet.Row(5).Height = 35;// 自动调整列宽foreach (var col in worksheet.Columns){col.AutoFit();}worksheet.Column(3).Width = 13;worksheet.Column(4).Width = 14;worksheet.Column(5).Width = 17;string fileName = "测试Excel" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xlsx";// 保存到文件string strPath = Path.Combine(_hostingEnvironment.ContentRootPath, "wwwroot").ReplacePath() + "/PExcel/" + fileName;FileInfo file = new FileInfo(strPath);package.SaveAs(file);return fileName.Replace(@"\", @"\\");}}

前端代码

//导出
function Export() {proxy.$refs["formRef"].validate((valid) => {if (valid) {ExportShipSoilExcel(form.value).then((res) => {const url =import.meta.env.VITE_APP_SERVER_API +"/tool/file/downloadapkfile/PExcel/" +res.data;const link = document.createElement("a");link.style.display = "none";link.href = url;link.setAttribute("download", res.data); // 文件名link.setAttribute("target", "_black");document.body.appendChild(link);link.click();document.body.removeChild(link); // 下载完成移除元素window.URL.revokeObjectURL(url); // 释放掉blob对象});}});
}

http://www.ppmy.cn/devtools/123344.html

相关文章

【Kubernetes】常见面试题汇总(四十八)

目录 108.考虑一家拥有非常分散的系统的跨国公司&#xff0c;希望解决整体代码库问题。您认为公司如何解决他们的问题&#xff1f; 109.我们所有人都知道从单服务到微服务的转变从开发方面解决了问题&#xff0c;但在部署方面却增加了问题。公司如何解决部署方面的问题&#x…

上海亚商投顾:创业板指大涨超17% 两市成交额超3.45万亿创

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日大幅高开后回落&#xff0c;创业板指大涨超17%&#xff0c;续创历史单日最大涨幅。券商股再掀涨停潮&…

java -jar 指定配置 logback.xml

APP_NAMEruoyi-admin.jar APP_CONFIGconfig/application.yml,config/application-druid.yml LOGBACK_CONFIGconfig/logback.xml#启动方法 start(){is_existif [ $? -eq "0" ]; thenecho "${APP_NAME} is already running. pid${pid} ."elsenohup java -Xm…

C#多线程基本使用和探讨

线程是并发编程的基础概念之一。在现代应用程序中&#xff0c;我们通常需要执行多个任务并行处理&#xff0c;以提高性能。C# 提供了多种并发编程工具&#xff0c;如Thread、Task、异步编程和Parallel等。 Thread 类 Thread 类是最基本的线程实现方法。使用Thread类&#xff0…

如何通过Kubectl 重启Pod的六种方法

大家可能都知道 kubectl 其实没有 restart pod 这个命令&#xff0c;这个主要是由于在 k8s 中pod 的管理属于rs 等控制器&#xff0c;并不需要运维手动维护&#xff0c;但有时候&#xff0c;我们修改了configmap 的配置文件后&#xff0c;希望重启pod 加载配置&#xff0c;此时…

Unity3D游戏的内存控制详解

Unity3D是一款流行的游戏引擎&#xff0c;支持多种平台&#xff0c;包括PC、移动设备和VR等。随着游戏的复杂性不断提高&#xff0c;Unity3D的内存管理变得尤为重要。本文将详细介绍Unity3D游戏中的内存控制技术&#xff0c;包括自动内存管理、对象池、延迟加载资源和手动清理资…

【Power Compiler手册】13.UPF多电压设计实现(13)

井偏置支持 一些工艺技术允许将专用的电压供电,而不是常规的轨电压,应用于芯片的n阱和p阱区域。对阱施加偏置电压会改变阱中晶体管的阈值电压,从而影响性能和漏电流。 Power Compiler工具提供了一个可选模式,使用UPF命令指定n阱和p阱偏置供电基础设施。在此模式下,工具会…

低质量数据的多模态融合方法

目录 多模态融合 低质量多模态融合的核心挑战 噪声多模态数据学习 缺失模态插补 平衡多模态融合 动态多模态融合 启发式动态融合 基于注意力的动态融合 不确定性感知动态融合 论文 多模态融合 多模态融合侧重于整合多种模态的信息,以实现更准确的预测,在自动驾驶、…