Что нового

Нарисовать границы ячеек в Excel

SANILA

Новичок
Сообщения
13
Репутация
2
Проблемка такая, надо из нескольких Excel файлов собрать нужную информацию в один.
Основную работу сделал с помощью библиотеки Excel.au3, но...
- есть ли другие способы прочитать excel-документ, чтобы окно документа не открывалось или было скрыто/свернуто
- как нарисовать границы ячеек Автоитом так и не разобрался

Помогите плиз кто чем может :IL_AutoIt_1:
 

XpycT

Скриптер
Сообщения
380
Репутация
132
SANILA [?]
есть ли другие способы прочитать excel-документ, чтобы окно документа не открывалось или было скрыто/свернуто
Попробуй вот так Reading Excel data using SQL


как нарисовать границы ячеек Автоитом так и не разобрался
Код:
#Region Includes
#EndRegion Includes
#NoTrayIcon

; Excel Object Model Reference
; http://msdn.microsoft.com/en-us/library/bb149081.aspx

HotKeySet("{ESC}", "_Close")

; Text Alligment
$iCenter = -4108

; Стили линий
$iContinuous    = 1     ; Continuous line.
$iDashDot       = 4     ; Alternating dashes and dots.
$iDashDotDot    = 5     ; Dash followed by two dots.
$iSlantDashDot  = 13    ; Slanted dashes.
$iDash          = -4115 ; Dashed line.
$iDot           = -4118 ; Dotted line.
$iDouble        = -4119 ; Double line.
$iLineStyleNone = -4142 ; No line.

; Границы
$iDiagonalDown     = 5  ; Border running from the upper left-hand corner to the lower right of each cell in the range.
$iDiagonalUp       = 6  ; Border running from the lower left-hand corner to the upper right of each cell in the range.
$iEdgeLeft         = 7  ; Border at the left-hand edge of the range.
$iEdgeTop          = 8  ; Border at the top of the range.
$iEdgeBottom       = 9  ; Border at the bottom of the range.
$iEdgeRight        = 10 ; Border at the right-hand edge of the range.
$iInsideHorizontal = 12 ; Horizontal borders for all cells in the range except borders on the outside of the range.
$iInsideVertical   = 11 ; Vertical borders for all the cells in the range except borders on the outside of the range

Dim $iFontStyleBold = 1, $iFontStyleItalic = 1

$fAlerts = 0

$oExcel = ObjCreate("Excel.Application")
$oExcel.Visible = True

$oWorkSheet = $oExcel.WorkBooks.Add.Worksheets(1)
$oRange = $oWorkSheet.Range("B2:F2")
$oRange.Select
$oExcel.Selection.Merge
With $oRange
	.Borders.LineStyle   = $iDouble
EndWith

While 1
	Sleep(500)
WEnd

Func _Close()
	$oExcel.Application.DisplayAlerts = $fAlerts
	$oExcel.Application.ScreenUpdating = $fAlerts
	$oExcel.Quit

	Exit
EndFunc
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
SANILA [?]
- есть ли другие способы прочитать excel-документ, чтобы окно документа не открывалось или было скрыто/свернуто
Код:
$oExcel = ObjCreate('Excel.Application')
With $oExcel
	.Visible = False ; запустит Эксель в скрытом режиме
	; тут действия с документом
	.ActiveWorkBook.Saved = True ; симулирует факт сохранения документа чтобы после закрытия не вылез диалог для сохранения =)
	.Quit ; выход
EndWith


По границам нашел функцию добавления границы только вокруг ячеек
BorderAround(LineStyle, Weight, ColorIndex, Color)
ColorIndex 0 - 56
Color 0x000000 - 0xFFFFFF
Можно использовать так:
BorderAround(LineStyle, Weight, ColorIndex)
BorderAround(LineStyle, Weight)
BorderAround(LineStyle)
, если нужно пропустить какой-то параметр, то придется указывать его IndexNone
$iLineStyleNone = -4142
толщину придется указать, иначе зачем граница без толщины =)
xlHairLine = 1;
xlMedium = -4138;
xlThick = 4;
xlThin = 2;

но xlColorIndexNone = -4142 из Автоита выдает ошибку, поэтому цвет можно задавать только индексом =(
Код:
$oExcel = ObjCreate('Excel.Application')
With $oExcel
	.Visible = True
	.Workbooks.Add
	.ActiveSheet.Range(.Cells(2, 2), .Cells(5, 5)).BorderAround(-4119, 4, 30)
;~ 	.ActiveSheet.Range(.Cells(2, 2), .Cells(5, 5)).BorderAround(-4119, 4) ; так будет черная граница
	.ActiveWorkBook.Saved = True
EndWith
 
Автор
S

SANILA

Новичок
Сообщения
13
Репутация
2
Спасибо большое коллеги за наводку, правда пришлось весь скрипт переписывать, зато теперь все как надо.
Нашел полезную ссылочку по макросам, мож кому пригодится
http://www.msoffice.nm.ru/faq/macros.htm
 
Верх