C#如何将ComboBox组合框的多个选项值全部保存到CSV文件
C# ComboBox多选项导出Excel解决方案
问题根因
你目前仅能导出第一个值的核心原因是:导出代码仅读取了ErrorTypeCombo.SelectedItem和ErrorIdentCombo.Text,这两个属性仅返回ComboBox当前选中的项(你在粘贴逻辑末尾还手动将SelectedIndex设为0,所以永远只会取到第一项),你提取到的所有其余数据都存储在ComboBox的Items集合中未被遍历读取。
修复步骤
1. 先修复现有代码语法错误
你粘贴逻辑中有一行缺少右括号,会导致编译失败,先修正:
// 原错误代码 errorStart = aosinformation.Substring(var1, 400).IndexOf("notam"; // 修正后代码 errorStart = aosinformation.Substring(var1, 400).IndexOf("notam");
2. 修改导出逻辑,遍历所有选项写入
将原有导出部分的代码替换为如下内容,会自动将所有提取到的错误逐行写入Excel:
Excel.Workbook xlworkbook; Excel.Worksheet xlworksheet; object misValue = System.Reflection.Missing.Value; xlworkbook = xlap.Workbooks.Add(misValue); xlworksheet = (Excel.Worksheet)xlworkbook.Worksheets.get_Item(1); Excel.Sheets worksheets = xlworkbook.Worksheets; Range rg = (Excel.Range)xlworksheet.Cells[1, 2]; rg.EntireColumn.NumberFormat = "YYYY-MM-DD"; // 写入第一行固定字段信息 xlworksheet.Cells[1, 1] = textBox1.Text; xlworksheet.Cells[1, 2] = dateTimePicker1.Value; xlworksheet.Cells[1, 3] = textBox2.Text.ToUpper(); xlworksheet.Cells[1, 4] = textBox3.Text.ToUpper(); xlworksheet.Cells[1, 5] = textBox4.Text.ToUpper(); xlworksheet.Cells[1, 6] = comboBox1.Text; // 遍历所有错误项逐行写入,两个ComboBox的项是成对添加的,数量一致 if (ErrorTypeCombo.Items.Count == ErrorIdentCombo.Items.Count) { // 从第二行开始写入错误信息,第一行已经写入固定字段 for (int i = 0; i < ErrorTypeCombo.Items.Count; i++) { int rowNum = i + 2; xlworksheet.Cells[rowNum, 7] = ErrorTypeCombo.Items[i].ToString(); xlworksheet.Cells[rowNum, 8] = ErrorIdentCombo.Items[i].ToString(); } } // 此处补充你原有Excel保存、关闭的逻辑即可,注意释放COM对象避免Excel进程残留
可选优化建议
作为新手可以额外定义数据存储结构,不要直接依赖控件存储业务数据,逻辑会更清晰:
- 先在窗体类中定义错误信息类和全局存储列表
public class ErrorRecord { public string ErrorType { get; set; } public string ErrorIdent { get; set; } } // 全局变量 List<ErrorRecord> AllErrors = new List<ErrorRecord>();
- 粘贴提取时同时往列表和ComboBox中添加数据
// 原添加逻辑 ErrorTypeCombo.Items.Add(errorType); ErrorIdentCombo.Items.Add(errorIdent); // 新增行 AllErrors.Add(new ErrorRecord { ErrorType = errorType, ErrorIdent = errorIdent });
- 导出时直接遍历
AllErrors列表即可,不用依赖控件取值。
内容的提问来源于stack exchange,提问作者Shane Nicholson
相关产品推荐
相关产品推荐

