Указать адрес ячейки 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д