Указать адрес ячейки Excel цифровыми координатами, а не буквенными - C#
Формулировка задачи:
Открываю или создаю, если нету, файл Excel и забиваю в него данные.
*Можно ли в Excel указывать координаты ячеек и соответственно диапазоны с помощью цифровых координат, без использования буквенных.
Знаю, что можно создать массив String и вбить туда координаты типа "А", "В", "С".... но это не вариант, потому что заранее координат не знаю, а делать массив и вбивать туда несколько сотен символов - идея фиговая)
Подскажите альтернативу.
private void WriteDataInExcel() { DateTime ThisDay = DateTime.Today; // узнаем дату listBox1.Items.Add(ThisDay.ToString("d").Replace("/", "-")); String filename = ThisDay.ToString("d").Replace("/", "-"); bool MakeNew = false; Excel.Application exc = new Microsoft.Office.Interop.Excel.Application(); Excel.Workbook wb; Excel.Worksheet wsh; Excel.Range rng; // RCells; exc.Visible = false; // скрываем Excel object misValue = System.Reflection.Missing.Value; if (exc == null) { MessageBox.Show("Excel is not properly installed! /n Excel не установлен!"); return; } try { wb = exc.Workbooks.Open("F:\\Programming\\Programmable_DC\\GwInStek\\Progs\\Mine5\\" + filename + ".xls"); } catch { try { wb = exc.Workbooks.Add(misValue); MakeNew = true; } catch { MessageBox.Show( // Выводим сообщение "Something is wrong with Excel", "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); exc.Quit(); return; } } wsh = (Excel.Worksheet)wb.Worksheets.get_Item(1); // wsh = wb.Worksheets[1]; rng = wsh.UsedRange; wsh.Cells[1, 1] = "№"; // RCells = wsh.get_Range(A1,rng.Columns.Count); // RCells.Merge(Type.Missing); for (int i = 0; i <= MesCount; i++) { wsh.Cells[1, i + 2] = i + 1; int NR = 0; String stRD = ""; for (int j = 0; j < LblCurRes[i].Text.Length; j++) if (LblCurRes[i].Text[j] == 'R') { NR = j; break; } for (int j = NR + 4; j < LblCurRes[i].Text.Length; j++) stRD += LblCurRes[i].Text[j]; wsh.Cells[rng.Rows.Count + 1, 1] = rng.Rows.Count; wsh.Cells[rng.Rows.Count + 1, i + 2] = stRD; } if (MakeNew == true) wb.SaveAs("F:\\Programming\\Programmable_DC\\GwInStek\\Progs\\Mine5\\" + filename + ".xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); wb.Save(); wb.Close(true, misValue, misValue); exc.Quit(); MessageBox.Show( // Выводим сообщение "Saved", "Saved", MessageBoxButtons.OK, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); releaseObject(wsh); releaseObject(wb); releaseObject(exc); } private void releaseObject(object obj) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); obj = null; } catch (Exception ex) { obj = null; MessageBox.Show("Exception Occured while releasing object " + ex.ToString()); } finally { GC.Collect(); } }
Решение задачи: «Указать адрес ячейки Excel цифровыми координатами, а не буквенными»
textual
Листинг программы
wsh.Cells[rng.Rows.Count + 1, 1].Font.Name = "Arial"; wsh.Cells[rng.Rows.Count + 1, 1].Font.Color = ColorTranslator.ToOle(Color.White); wsh.Cells[rng.Rows.Count + 1, 1].Interior.Color = ColorTranslator.ToOle(Color.Black);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д