c# - 使用 C# 的 Microsoft.Office.Interop.Excel 生成具有预填充下拉值的 Excel 文件

标签 c# excel office-interop com-interop excel-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");

最佳答案

将验证限制应用于列表时,公式参数需要逗号分隔的值字符串。这是一个创建具有三个值的下拉列表的示例:

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];

关于c# - 使用 C# 的 Microsoft.Office.Interop.Excel 生成具有预填充下拉值的 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42909597/

相关文章:

c# - 检测 PowerPoint 幻灯片是否隐藏

c# - 如何延长 SolrConnection 中的超时? (SolrConnection异常: The operation has timed out)

c# - 如何使用 Win32 API 在 TreeView 中选择一个项目

excel - 调整图片宽度和高度

读取 Excel 表格,而不是简单的命名范围

c# - 如何修复 Task.Run 从 UI 线程抛出 STA 错误

c# - Word C# 中的只读合并字段

c# - RichTextBox 中的 Border.IsMouseOver(RichTextBox 中的 InlineUIContainer 不响应事件/触发器)

c# - 如何发送带有查询字符串(包含 url 作为查询字符串)的 url 作为查询字符串

java - 如何在 Mule 3.4 ESB 中使用 Datamapper 映射数据库中的 Excel 文件