Автоматическое расширение отформатированной таблицы в Excel с использованием C#

Я пытался вставить новую строку в конце листа с помощью OLEDB. На листе есть таблица форматирования в диапазоне (a1:xx) с сохранением формата и формулы. Но вставка OLEDB не поставляется с любым форматом.

Я прочитал пост Как скопировать формат одной строки в другую строку в Excel с помощью C#, чтобы получить формат, но у меня не работает. Кроме того, я не думаю, что он получит формулу.

В пользовательском интерфейсе Excel в правом нижнем углу отформатированной таблицы появится двойная стрелка, и мы можем перетащить ее, чтобы расширить диапазон таблицы форматирования.

Изображение: как это выглядит в Excel

Что-нибудь, что мы могли бы сделать через C#?

Благодарю.

        Excel.Range last = xlWS.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing);
        Excel.Range RngToCopyOri = xlWS.get_Range("A1", last).EntireRow;
        Excel.Range RngToCopy = RngToCopyOri.Resize[RngToCopyOri.Rows.Count + 1, RngToCopyOri.Columns.Count]; //because insert will add only 1 row, so the range would be one row larger
        Excel.Range RngToInsert = xlWS.get_Range("A1", Type.Missing).EntireRow;
        RngToInsert.Insert(Excel.XlInsertShiftDirection.xlShiftDown, RngToCopy.Copy(Type.Missing));

Я попытался скопировать Range(A1, нижняя левая ячейка) в исходное местоположение, но ничего не изменилось.

1 ответ

Я пробовал Range.resize, автозаполнение, автоформат. У всех них есть своего рода проблемы. Я наконец отказался от использования OLEDB для вставки данных. Вместо этого я использовал

worksheet.UsedRange.Item[rowNo,getColumnIndex(worksheet,columnTitle)]=value

private int getColumnIndex(Excel.Worksheet sheetname, string header) {
        int index=0;
        Excel.Range activeRange=sheetname.UsedRange;
        for (int i = 1; i <= activeRange.Columns.Count; i++) {
            if (header == (string)(activeRange.Item[1,i] as Excel.Range).Value) {
                index = i;
            }
        }
        if(index==0)
            throw some exception you like;
        return index;
    }

Функция getColumnIndex предназначена для поиска столбца в SELECT [column] из...

Таким образом, таблица форматирования автоматически расширится до диапазона, в который вы вводите значение.

Другие вопросы по тегам