У меня есть приложение для форм Windows, в котором пользователь вводит свое имя (имя и фамилия) в поле со списком. У меня есть кнопка добавления, которая добавляет любое значение, которое они вносят в поле со списком, и перечисляет его ниже. То, что я пытаюсь сделать, это взять имена, перечисленные в поле со списком, и ввести их в excel в отдельных строках. У меня также есть 2 столбца в файле excel с «Имя» и «Фамилия», поэтому имя в поле со списком нужно разделить.C# записывать значения combobox для строк 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];
}
Не имеет значения, сколько сообщений существует о том, какая плохая идея заключается в использовании inter interop для управления офисными документами, всегда кто-то все еще это делает. – Brook
@Brook Почему это, из любопытства? – Yatrix
@Brook ... Плохая идея может быть, но удивительно проста в программировании. У меня есть свои недостатки, я свободно признаю, но у нее также есть свои высокие очки. Boundinashes6 ... В чем вопрос? Его непонятное (по крайней мере для меня) то, что вы пытаетесь сделать здесь. – Nevyn