2017-03-20 31 views
1

生成具有預先設置的下拉值的Excel文件我想從我的C#應用程序生成一個Excel文件,用戶可以稍後填寫該文件。我正在使用Microsoft.Office.Interop.Excel使用C#的Microsoft.Office.Interop.Excel

我發起Excel並使用下面的代碼填充標題單元格:

var excelApp = new Excel.Application {Visible = true}; 
var workbook = excelApp.Workbooks.Add(Missing.Value); 
var workSheet = (Excel.Worksheet) workbook.Worksheets.Item[1]; 

headers.Select((s, i) => new Tuple<string, int>(s, i)).ToList().ForEach 
    (
    h => { workSheet.Cells[1, h.Item2 + 1] = h.Item1; } 
    ); 

我怎麼可以指定第一列的單元格應該有一個包含預填充值的下拉?

我試過的東西負載可在網上,如下面找到here,沒有運氣:

var dropDownRange = workSheet.Range["A2"].Resize[64000]; 
dropDownRange.Value = Values; 
dropDownRange = dropDownRange.Offset[0, 1]; 
dropDownRange.Validation.Delete(); 
dropDownRange.Validation.Add(Excel.XlDVType.xlValidateList, Excel.XlDVAlertStyle.xlValidAlertInformation, Type.Missing, "=DropDownList"); 

回答

1

應用驗證限制列表時,該公式的參數需要一個逗號分隔值的字符串。下面是三個值來創建一個下拉的例子:

var items = new List<string>() { "Item 1", "Item 2", "Item 3" }; 
var formattedItems = string.Join(", ", items.ToArray()); 

var dropDownRange = workSheet.Range["A2"].EntireColumn; 
dropDownRange.Validation.Delete(); 
dropDownRange.Validation.Add(Excel.XlDVType.xlValidateList, 
    Excel.XlDVAlertStyle.xlValidAlertInformation, 
    Excel.XlFormatConditionOperator.xlBetween, 
    formattedItems, 
    Type.Missing); 

此外,如果你需要的細胞默認是你可以做到這一點的值:

dropDownRange.Value = "Item 2"; 

甚至更​​好:

dropDownRange.Value = items[1]; 
相關問題