ユーザーが自分の名前 (名と姓) をコンボボックスに入力する Windows フォームアプリケーションがあります。入力した値をコンボボックスに追加して下にリストする追加ボタンがあります。私がやろうとしているのは、コンボボックスにリストされている名前を取得し、それらを別々の行でExcelに入力することです. また、Excel ファイルには「名」と「姓」の 2 つの列があるため、コンボ ボックスの名前を分割する必要があります。
ここに私のExcelのコードがあります:
if (!File.Exists(@"C:\gradsheet.xlsx"))
{
File.WriteAllBytes(@"C:\gradesheet.xlsx", Properties.Resources.gradesheet);
}
// if there is no title selected
if (String.IsNullOrEmpty(cboSelect.Text))
{
MessageBox.Show("Please make sure a category is selected.", "No Subject Found Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
object oOpt = System.Reflection.Missing.Value;
Excel.Application excelApp = new Excel.ApplicationClass();
Excel.Workbook wBook;
string myPath = @"C:\gradesheet.xlsx";
wBook = excelApp.Workbooks.Open(myPath, Missing.Value, Missing.Value,
Missing.Value, Missing.Value,
Missing.Value, Missing.Value,
Missing.Value, Missing.Value,
Missing.Value, Missing.Value,
Missing.Value, Missing.Value,
Missing.Value, Missing.Value);
Excel.Worksheet wSheet = (Excel.Worksheet)wBook.Worksheets[1];
wBook.Worksheets.get_Item(1);//get worksheet number
wSheet.Name = cboSelect.Text;//define name
//put name in excel(THIS IS WHERE I NEED THE COMBOBOX ITEMS IN EXCEL)
excelApp.Cells[8, 1] = firstName;
excelApp.Cells[8, 2] = lastName;
//Subject Name to cell
excelApp.Cells[5, 1] = cboSelect.Text;
//these are some cleanup calls that I found in another example..
excelApp.AlertBeforeOverwriting = false;
excelApp.DisplayAlerts = false;
excelApp.Save();
excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
GC.Collect();
GC.WaitForPendingFinalizers();
DialogResult result;
result = MessageBox.Show("Would you like to open the gradesheet?", "gradesheet", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
string gradesheet = @"C:\gradesheet.xlsx";
Process.Start(gradesheet);
}
}
これは姓と名を分割する私のコードですが、コンボボックス内のすべてのアイテムに対してそれを行う方法がわかりません:
string fullName = cboStudent.Text;
string firstName;
string lastName;
string[] parts = fullName.Split(new string[] { ", " }, StringSplitOptions.None);
if (parts.Length == 1)
{
parts = fullName.Split(' ');
if (parts.Length == 1)
{
lastName = fullName;
firstName = "";
}
else
{
lastName = parts[1];
firstName = parts[0];
}
}
else
{
lastName = parts[0];
firstName = parts[1];
}