Указать адрес ячейки 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);