簡體   English   中英

C#Excel下拉列表

[英]C# Excel Drop Down List

我正在嘗試創建一個放置列表,沒有運氣可以找到類似的示例代碼或文檔,因此我獨自飛翔

當我運行此示例代碼時,我創建了

static void Main(string[] args)
    {

        using (FileStream filename = new FileStream(@"INSERTYOUROWNPATH.xlsx", FileMode.Create))
        {

            var workbook = new XSSFWorkbook();

            XSSFSheet xsheet = (XSSFSheet)workbook.CreateSheet("Validation");

            CT_DataValidation valid = new CT_DataValidation();
            valid.showDropDown = true;
            valid.allowBlank = true;

            var constraint = new XSSFDataValidationConstraint(new string[] { "0064", "0061" }); //to be used in list
            var range = new CellRangeAddressList(11, 14, 13, 13);    //apply to row 12:14 starting at column N finishing at column N
            var addingconstraint = new XSSFDataValidation(constraint, range, valid);

            addingconstraint.EmptyCellAllowed = true;
            addingconstraint.SuppressDropDownArrow = false;
            xsheet.AddValidationData(addingconstraint);

            workbook.Write(filename);

        }
    }

打開電子表格時出現以下錯誤:

“我們在“ Validations.xlsx”中發現了一些內容問題,您是否想使用它來嘗試盡可能多地進行恢復?如果您信任此工作簿的來源,請單擊“是”。

然后,我收到以下修復消息:

“已修復的部分:/xl/worksheets/sheet1.xml發生XML錯誤的部分。加載錯誤。第1行的列684”

我能否對失敗之處有一些了解?

您的問題似乎是非常相似, 對數據驗證和數據約束問題。

XSSFDataValidation dataValidation = null;
XSSFDataValidationConstraint dvConstraint = null;
XSSFDataValidationHelper validationHelper = null;

int DVRowLimit = (Int16.MaxValue);
XSSFCellStyle numberCellStyle = (XSSFCellStyle)workbook.CreateCellStyle();
XSSFDataFormat numberDataFormat = (XSSFDataFormat)workbook.CreateDataFormat();
numberCellStyle.SetDataFormat(numberDataFormat.GetFormat("#,###,###"));


CellRangeAddressList cellRangeFieldsType1 = new CellRangeAddressList(1, DVRowLimit, headerCount, headerCount);
dvConstraint = (XSSFDataValidationConstraint)validationHelper.CreateintConstraint(OperatorType.BETWEEN, "0", Int64.MaxValue.ToString());
dataValidation = (XSSFDataValidation)validationHelper.CreateValidation(dvConstraint, cellRangeFieldsType1);
dataValidation.ShowErrorBox = true;
dataValidation.SuppressDropDownArrow = true;
dataValidation.ErrorStyle = 0;
dataValidation.CreateErrorBox("InvalidValue", "Number Should be a integer.");
dataValidation.ShowErrorBox = true;
dataValidation.CreatePromptBox("Number Data Validation", "Enter Number.");
dataValidation.ShowPromptBox = true;
sheet.AddValidationData(dataValidation);
sheet.SetDefaultColumnStyle(column, numberCellStyle);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM