C# 使用NOPI生成Excel文件的方式
using NPOI.SS.UserModel; using NPOI.HSSF.UserModel; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; /// <summary> /// 根据对象列表生成Excel文档,默认字段名作为表头 /// </summary> /// <param name="list">列表数据</param> /// <param name="dataType">生成的Excel文件类型</param> /// <param name="errorMsg">错误信息</param> /// <param name="resultType">返回结果类型: 1.文件地址 2.Base64字符串 </param> /// <returns></returns> public static string StringListToExcel(List<List<string>> list, string dataType, out string errorMsg, string fileName = "", int resultType = 1, string fileType = "xls") { string result = string.Empty; try { if (string.IsNullOrWhiteSpace(dataType)) { dataType = "QuestionNaireDetail"; } if (!(list?.Count > 0)) { errorMsg = "列表信息不能为空"; return null; } errorMsg = ""; string fileTypeStr = fileType?.ToLower() == "xlsx" ? "xlsx" : "xls"; IWorkbook workbook = fileType?.ToLower() == "xlsx" ? new XSSFWorkbook() : new HSSFWorkbook(); var sheet = workbook.CreateSheet(); //填充内容 for (var i = 0; i < list.Count; i++) { var subList = list[i]; var dataRow = sheet.CreateRow(i); for (var j = 0; j < subList.Count; j++) { dataRow.CreateCell(j).SetCellValue(subList[j]); } } for (var i = 0; i < list[0].Count; i++) { sheet.AutoSizeColumn(i);//列宽自适应,只对英文和数字有效 } //保存 using (MemoryStream ms = new MemoryStream()) { if (resultType == 1) { string savePath = "d:/website/files/" //本地文件保存路径 if (string.IsNullOrWhiteSpace(fileName)) fileName = Guid.NewGuid().GuidToString()+"." + fileTypeStr; //获取文件名称 string newPath = savePath + fileName; using (FileStream fs = new FileStream(newPath, FileMode.Create, FileAccess.Write)) { workbook.Write(fs); } result = newPath; } else //返回Base64字符串 { workbook.Write(ms); byte[] buffer = ms.ToArray(); ms.Close(); result = Convert.ToBase64String(buffer); } } workbook.Close(); } catch (Exception ex) { errorMsg = ex.Message; return null; } return result; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!