C# NPOI XSSFWorkbook 添加下拉框

1、添加下拉框,并开启列值校验

/// <summary>
/// 添加下拉框,并开启列值校验
/// </summary>
public static void SetCellDropdownList(XSSFSheet sheet, int firstcol, int lastcol, List<string> vals)
{
    //设置 下拉框内容
    var dvHelper = new XSSFDataValidationHelper(sheet);
    var dvConstraint = (XSSFDataValidationConstraint)dvHelper.CreateExplicitListConstraint(vals.ToArray());

    //设置下拉框对应的行范围、列范围,行和列都是从0开始
    var addressList = new CellRangeAddressList(0, 65535, firstcol, lastcol);
    var validation = (XSSFDataValidation)dvHelper.CreateValidation(dvConstraint, addressList);
    //开启下拉框
    validation.ShowPromptBox = true;
    //开启错误提醒
    validation.ShowErrorBox = true;
    sheet.AddValidationData(validation);
}

2、调用方

public static void main()
{
    var workbook = new XSSFWorkbook();
    XSSFSheet sheet = (XSSFSheet)workbook.CreateSheet("sheet1");
    var validateList=new List<string>(){"选项1","选项2","选项3"};
    SetCellDropdownList(sheet, 2, 2, validateList)

}

您可以使用NPOI库来操作Excel文件,并添加附件。以下是一个示例代码,演示如何使用NPOI在Excel中添加附件: ```csharp using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.Util; // 创建工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); ISheet sheet = workbook.CreateSheet("Sheet1"); // 添加数据到工作簿 IRow row = sheet.CreateRow(0); row.CreateCell(0).SetCellValue("附件"); // 创建附件 byte[] attachmentData = File.ReadAllBytes("path_to_attachment"); // 替换为实际附件的路径 int attachmentDataLength = attachmentData.Length; int attachmentNameLength = Encoding.UTF8.GetBytes("attachment.xlsx").Length; // 创建附件记录 EscherBSERecord bse = new EscherBSERecord(); bse.RecordId = unchecked((short)0x01C0); bse.Options = (short)0x0002; bse.BlipTypeWin32 = 0x0009; bse.BlipTypeMacOS = 0x0191; bse.UID = new byte[] { 0x01, 0x02, 0x03, 0x04 }; bse.Size = attachmentDataLength; bse.Ref = 0; bse.Offset = 0x0000; bse.BlipName = new byte[attachmentNameLength]; Array.Copy(Encoding.UTF8.GetBytes("attachment.xlsx"), bse.BlipName, attachmentNameLength); // 将附件数据写入文件 MemoryStream dataStream = new MemoryStream(); dataStream.Write(attachmentData, 0, attachmentDataLength); dataStream.Position = 0; // 添加附件记录 workbook.AddBSERecord(bse); int pictureIndex = workbook.AddPicture(dataStream, PictureType.JPEG); // 创建绘图对象 IDrawing patriarch = sheet.CreateDrawingPatriarch(); // 创建锚点 IClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0, 1, 1, 2, 2); // 创建图片 IPicture picture = patriarch.CreatePicture(anchor, pictureIndex); // 设置图片大小 picture.Resize(); // 保存工作簿 using (FileStream fileStream = new FileStream("output.xlsx", FileMode.Create)) { workbook.Write(fileStream); } ``` 上述代码使用NPOI库创建了一个Excel工作簿,并添加了一个名为"附件"的单元格。然后,它创建了一个附件记录,并将附件数据写入文件。最后,它在工作簿中创建了一个图片,并将其插入到单元格中。 请注意,您需要将代码中的"path_to_attachment"替换为实际附件的路径,并在保存工作簿时指定正确的文件名。 希望对您有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值