Как да копирате непразни клетки от работен лист на Excel?

Пиша C# приложение, което поставя работен лист на Excel в документ на Word.

using Excel = Microsoft.Office.Interop.Excel;
using Word = Microsoft.Office.Interop.Word;

Excel.Worksheet ws = wb.Worksheets[1];        
// select all then copy to clipboard
ws.get_Range("a1").EntireRow.EntireColumn.Copy();
var wordApp = new Word.Application();
wordApp.Visible = true;
wordApp.Documents.Add();
wordApp.Selection.PasteSpecial(Link: true);

Кодът по-горе работи добре, но Word поставя обекти като HTML по подразбиране и това обърква оформлението на документа.

Така че опитах ръчно поставяне (ctrl-alt-v) и избрах „Обект на работния лист на Microsoft Office Excel 2003“ (очаквах, че това може да се направи и от C#) и този път целият работен лист (65535*65535 може би) е поставен и значимите клетки са сведени до минимум.

Работният лист съдържа диаграми и растерни изображения, така че е трудно да се изчисли координатата на клетката точно под края на диаграмите/растерните изображения.

Има ли някакъв пряк път за избиране само на непразните клетки в Excel?


person Jeffrey Goines    schedule 13.11.2012    source източник
comment
Формите (като диаграми и т.н.) имат свойство TopLeftCell и BottomRightCell. Ако преминете през всички форми, можете да изчислите диапазона, който трябва да копирате (във връзка с използването на свойството UsedRange на листа)   -  person Tim Williams    schedule 13.11.2012
comment
Искате ли просто да копирате диаграми и растерни изображения или клетки със стойности? Също така, трябва ли да копирате листа такъв, какъвто е, или просто искате да експортирате обекти в word? Това, което имам предвид е, че действителното копиране на голям лист в word ще направи много трудно да се види нещо.   -  person yu_ominae    schedule 13.11.2012


Отговори (1)


Има ли пряк път за избиране само на непразните клетки в Excel? - Да. Опитайте да направите: wholeRange = sheet.Cells.SpecialCells(XlCellType.xlCellTypeConstants, Type.Missing); .За да тествате тази функция, можете да натиснете F5->Special.. и да опитате други опции.

person Shelest    schedule 15.11.2012