创build一个列的所有行作为在Excel中的下拉列表使用c#

我的要求是导出一个空白Excel表单,其中包含5列,其中所有行的第三列作为下拉列表,以便用户可以使用此工作表来根据需要修改数据。 我正在使用c#来导出文件。

我已经在这方面做了工作,但目前,它只在特定的单元格中创build一个下拉列表,但我想将第一列的所有行作为下拉列表。

我使用gembox电子表格创build一个excel文件。

以下是我正在使用的代码:

SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY"); ExcelFile ef = new ExcelFile(); ExcelWorksheet ws = ef.Worksheets.Add("Journal Entry Format"); ws.Columns[0].Width = 30 * 256; ws.Columns[1].Width = 30 * 256; ws.Columns[2].Width = 30 * 256; ws.Columns[3].Width = 30 * 256; ws.Columns[4].Width = 30 * 256; ws.Columns[5].Width = 30 * 256; ws.Columns[6].Width = 30 * 256; CellStyle tmpStyle2 = new CellStyle(); tmpStyle2.HorizontalAlignment = HorizontalAlignmentStyle.Center; tmpStyle2.VerticalAlignment = VerticalAlignmentStyle.Center; tmpStyle2.FillPattern.SetSolid(System.Drawing.Color.Yellow); ws.Cells.GetSubrangeAbsolute(0, 0, 1, 5).Style = tmpStyle2; ws.Cells[1, 0].Value = "Last"; ws.Cells.GetSubrangeAbsolute(1, 0, 1, 5).Merged = true; CellStyle tmpStyle1 = new CellStyle(); tmpStyle1.HorizontalAlignment = HorizontalAlignmentStyle.Center; tmpStyle1.VerticalAlignment = VerticalAlignmentStyle.Center; tmpStyle1.FillPattern.SetSolid(System.Drawing.Color.Blue); tmpStyle1.Font.Weight = ExcelFont.BoldWeight; tmpStyle1.Font.Color = System.Drawing.Color.White; tmpStyle1.WrapText = true; ws.Cells[3, 0].Value = "Voucher Date"; ws.Cells[3, 1].Value = "Voucher No."; ws.Cells[3, 2].Value = "Select Ledger"; ws.Cells[3, 3].Value = "Debit/Credit"; ws.Cells[3, 4].Value = "Amount"; ws.Cells[3, 5].Value = "Narration"; ws.Cells.GetSubrangeAbsolute(3, 0, 3, 5).Style = tmpStyle1; var list = new List<string>(); foreach (var led in ledgers) { list.Add(led.AccountHead); } var flatList = string.Join(",", list.ToArray()); for (int i = 3; i < 100; ++i) { DataValidation dv = new DataValidation(); dv.InCellDropdown = true; dv.InputMessage = "Select Ledger"; dv.Formula1 = flatList; ws.DataValidations.Add(dv); ws.Columns[2].Cells[i + 1].Value = dv.Formula1; } ws.PrintOptions.FitWorksheetWidthToPages = 1; ef.Save(this.Response, "JournalEntry Format" + ".xlsx"); 

下面是如何设置第三列单元格作为下拉列表:

 var flatList = string.Join(",", list.ToArray()); DataValidation dv = new DataValidation(ws.Columns[2].Cells); dv.Type = DataValidationType.List; dv.InputMessage = "Select Ledger"; dv.Formula1 = flatList; ws.DataValidations.Add(dv);