Что нового

[Данные, строки] Как объединить ячейки в excel и произвести их форматирование

Yriy_07

Новичок
Сообщения
37
Репутация
0
Уважаемые пользователи форума! Подскажите пожалуйста, как объединять ячейки в excel, горизонтальные и вертикальные, а так же как производить их форматирование (поместить текст в центр) и закрасить ячейку. версия autoit 3.3.3
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
245
как объединять ячейки в excel
Код:
$oExcel.Range('A1:D3').Merge

поместить текст в центр
можно использовать функцию со старой UDF excel.au3 (или выдрать из неё нужную строку, вставив туда свои данные)
Код:
; #FUNCTION# ====================================================================================================================
; Name...........: _ExcelHorizontalAlignSet
; Description ...: Set the horizontal alignment of each cell in a range.
; Syntax.........: _ExcelHorizontalAlignSet($oExcel, $sRangeOrRowStart[, $iColStart = 1[, $iRowEnd = 1[, $iColEnd = 1[, $sHorizAlign = "left"]]]])
; Parameters ....: $oExcel - An Excel object opened by a preceding call to _ExcelBookOpen() or _ExcelBookNew()
;                  $sRangeOrRowStart - Either an A1 range, or an integer row number to start from if using R1C1
;                  $iColStart - The starting column for the number format(left) (default=1)
;                  $iRowEnd - The ending row for the number format (bottom) (default=1)
;                  $iColEnd - The ending column for the number format (right) (default=1)
;                  $sHorizAlign - Horizontal alignment ("left"|"center"|"right") (default="left")
; Return values .: On Success - Returns 1
;                  On Failure - Returns 0 and sets @error on errors:
;                  |@error=1 - Specified object does not exist
;                  |@error=2 - Starting row or column invalid
;                  |@extended=0 - Starting row invalid
;                  |@extended=1 - Starting column invalid
;                  |@error=3 - Ending row or column invalid
;                  |@extended=0 - Ending row invalid
;                  |@extended=1 - Ending column invalid
; Author ........: SEO <locodarwin at yahoo dot com>
; Modified.......: litlmike
; Remarks .......: None
; Related .......:
; Link ..........:
; Example .......: Yes
; ===============================================================================================================================
Func _ExcelHorizontalAlignSet($oExcel, $sRangeOrRowStart, $iColStart = 1, $iRowEnd = 1, $iColEnd = 1, $sHorizAlign = "left")
	If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
	If Not StringRegExp($sRangeOrRowStart, "[A-Z,a-z]", 0) Then
		If $sRangeOrRowStart < 1 Then Return SetError(2, 0, 0)
		If $iColStart < 1 Then Return SetError(2, 1, 0)
		If $iRowEnd < $sRangeOrRowStart Then Return SetError(3, 0, 0)
		If $iColEnd < $iColStart Then Return SetError(3, 1, 0)
		Switch ($sHorizAlign)
			Case "left"
				$oExcel.Activesheet.Range($oExcel.Cells($sRangeOrRowStart, $iColStart), $oExcel.Cells($iRowEnd, $iColEnd)).HorizontalAlignment = $xlLeft
			Case "center", "centre"
				$oExcel.Activesheet.Range($oExcel.Cells($sRangeOrRowStart, $iColStart), $oExcel.Cells($iRowEnd, $iColEnd)).HorizontalAlignment = $xlCenter
			Case "right"
				$oExcel.Activesheet.Range($oExcel.Cells($sRangeOrRowStart, $iColStart), $oExcel.Cells($iRowEnd, $iColEnd)).HorizontalAlignment = $xlRight
		EndSwitch
	Else
		Switch ($sHorizAlign)
			Case "left"
				$oExcel.Activesheet.Range($sRangeOrRowStart).HorizontalAlignment = $xlLeft
			Case "center", "centre"
				$oExcel.Activesheet.Range($sRangeOrRowStart).HorizontalAlignment = $xlCenter
			Case "right"
				$oExcel.Activesheet.Range($sRangeOrRowStart).HorizontalAlignment = $xlRight
		EndSwitch
	EndIf
	Return 1
EndFunc   ;==>_ExcelHorizontalAlignSet

Уж очень старая у Вас версия , обновитесь хотя бы до 3.3.14.2
 
Автор
Y

Yriy_07

Новичок
Сообщения
37
Репутация
0
Спасибо за помощь! А можете показать как это выглядит в открытой книге на примере? Например обединить ячейки А1А2А3 Сделать границы на ячеках С-D1234 форматировать ячейку с текстом В6 текст по центру и жирным. Буду очень признателен.
SciTE
Version 3.4.1
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
245
Код:
#include <excel.au3>
#include <array.au3>

$oExcel = _Excel_Open()
$oWorkbook = _Excel_BookNew($oExcel)
Local $aDataArray[6][4] = [[1, 2, 3, 4], ['', 12, 13, 14], ['', 22, 23, 24], [31, 32, 33, 34], [41, 42, 43, 44], [51, 52, 53, 54]]

_Excel_RangeWrite($oWorkbook, $oWorkbook.Activesheet, $aDataArray)
With $oExcel
	.ActiveSheet.Range(.Cells(1, 1), .Cells(4, 4)).Borders.Weight = 2
	.ActiveWorkBook.Saved = True
EndWith

$oRange = $oWorkbook.Application.Sheets(1).Range('B6')
With $oRange
	.Interior.ColorIndex = 36 ;заливка (1 - 56)
	.Font.Name = 'Tahoma' ; имя шрифта
	.Font.Size = 14 ; размер шрифта
	.Font.ColorIndex = 3 ; цвет шрифта (1 - 56)
	.Font.Bold = True ;жирный шрифт
	.Font.Italic = True ;курсив
	.HorizontalAlignment = $xlCenter ;расположение по горизонтали
	.VerticalAlignment = $xlCenter ;по вертикали
EndWith

Sleep(5000)
_Excel_Close($oExcel)
Обновите версию AutoIt и SciTe,у меня, например AutoIt 3.3.14.2 и SciTe 3.7.3
На совсем уж давних версиях AutoIt пример выше работать не будет.
 
Автор
Y

Yriy_07

Новичок
Сообщения
37
Репутация
0
Установил SciTe 3.7.3 в место русского ироглифы стали
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
245
Откройте в Notepad++ и пересохраните в кодировке UTF-8, можно и в настройках SciTe подшаманить, на форуме где-то было как.
 
Автор
Y

Yriy_07

Новичок
Сообщения
37
Репутация
0
Большое спасибо за подсказку с кодировкой и версией в остальном уже разобрался!
 
Верх