Как скопировать непустые ячейки из листа 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» (ожидая, что это также можно сделать с помощью С#), и на этот раз весь рабочий лист (возможно, 65535 * 65535) вставляется и значимые ячейки сведены к минимуму.

Рабочий лист содержит диаграммы и растровые изображения, поэтому трудно вычислить координату ячейки сразу под концом диаграмм или растровых изображений.

Есть ли ярлык для выбора только непустых ячеек в Excel?


person Jeffrey Goines    schedule 13.11.2012    source источник
comment
Фигуры (такие как диаграммы и т. д.) имеют свойства TopLeftCell и BottomRightCell. Если вы перебираете все фигуры, вы можете вычислить диапазон, который вам нужно скопировать (в сочетании с использованием свойства UsedRange листа)   -  person Tim Williams    schedule 13.11.2012
comment
Вы просто хотите скопировать диаграммы и растровые изображения или также ячейки со значениями? Кроме того, вам нужно скопировать лист как есть, или вы просто хотите экспортировать объекты в слово? Я имею в виду, что при фактическом копировании большого листа в слово будет очень трудно что-либо увидеть.   -  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