Эй, все, я испытываю транспонированное поведение при работе с массивом Excel.Worksheet.Cells. Excel.Worksheet.Cells имеет обратное поведение?
Моя первая ячейка должна быть в [строка = 10, колонка = 3]
Моя вторая ячейка должна быть в [строке = 11, колонки = 17]
Затем, используя эти две ячейки в качестве границ, я создаю диапазон и объединяя его. Как вы можете сказать по значениям, отмеченным выше, диапазон должен быть в основном горизонтальным. Таким образом, чтобы помочь мне, я создал простую вспомогательную функцию, которая объединяет клетки:
public static void MergeRange(Excel.Worksheet worksheet, int startRowIdx,
int startColIdx, int endRowIdx, int endColIdx, bool across = false)
{ //Get range boundaries.
Excel.Range cells = worksheet.Cells;
//commented out, resolved code is directly below - N. Miller, 9-24-2013
//Excel.Range topleftCell = cells[startColIdx][startRowIdx];
//Excel.Range bottomrightCell = cells[endColIdx][endRowIdx];
Excel.Range topleftCell = cells[startRowIdx, startColIdx];
Excel.Range bottomrightCell = cells[endRowIdx, endColIdx];
//Merge range.
Debug.WriteLine(String.Format("({0}, {1}) to ({2}, {3}).", startRowIdx, startColIdx, endRowIdx, endColIdx));
Excel.Range range = worksheet.get_Range(topleftCell, bottomrightCell);
Excel.Interior interior = range.Interior;
interior.ColorIndex = XLColor.PERIWINKLE; //JUST HIGHLIGHTS RANGE FOR NOW.
//range.Merge(across);
//Cleanup
Marshal.ReleaseComObject(interior);
Marshal.ReleaseComObject(range);
Marshal.ReleaseComObject(bottomrightCell);
Marshal.ReleaseComObject(topleftCell);
Marshal.ReleaseComObject(cells);
}
В приведенном выше коде, я выбираю ячейки, я хочу путем замены столбцов и строк. Это, вопреки тому, что я ожидал, приводит к желаемому поведению, но это противоречит документации MSDN:
В документации MSDN они дают пример, в котором указаны строки первого, то столбец следует после ,
Так что мой вопрос в том, что ... что правильно? Должно ли первое поле или должно быть должно быть столбец? Когда я изменяю свой код, который должен быть связан с документацией MSDN, выделенные ячейки транспонируются.
Если я вас правильно понял, то при использовании сказать ' ячейки [1] [2] ', то это означает' A2' В этом случае сначала стоит столбец, а затем строка. Если вы напишете его как 'cells [1,2]', тогда вы получите 'B2'. В этом случае сначала появится строка Row, а затем столбец. –
Это то же самое в Excel-VBA. '? Cells (1) (2) .address' в непосредственном окне дает' $ A $ 2' и '? Cells (1,2) .address' дает' $ B $ 1'. Если вы чувствуете, что я не понял ваш запрос, пожалуйста, перефразируйте его для меня ... –
@SiddharthRout, что заявляет OP, похоже, не представляется возможным в C#. – varocarbas