Что нового

Как экспортировать картинки из excel файла ?

armenxxx1

Продвинутый
Сообщения
155
Репутация
56
Как экспортировать картинки из excel файла ?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
armenxxx1,
Дайте файл Excel с картинкой, в каком виде ее (картинку) нужно получить?
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
armenxxx1

Код:
#include <Excel.au3>

Global $oExcel = _ExcelBookOpen(@ScriptDir & '\x.xls', 0)
_ExcelBookSaveAs($oExcel, @ScriptDir & '\temp.html', 'html', 0, 1)
_ExcelBookClose($oExcel)


Картинки будут в папке temp.files
 
Автор
A

armenxxx1

Продвинутый
Сообщения
155
Репутация
56
Код:
#include <Excel.au3>
#include <Array.au3>

$oExcel = _ExcelBookOpen(@ScriptDir & "\x.xls")
$aArray = _ExcelReadSheetToArray($oExcel)

For $i = 1 To $aArray[0][0]
	$1 = $aArray[$i][1]
	$2 = $aArray[$i][2] ;название изображения нет
	$3 = $aArray[$i][3]
	$4 = $aArray[$i][4]
	$5 =$aArray[$i][5]

	$file = FileOpen(@ScriptDir & "\"&$1&".txt", 257)
	FileWriteLine($file, "1|@|"&$1&"|@|")
	FileWriteLine($file, "2|@|"&$2&"|@|")
	FileWriteLine($file, "3|@|"&$3&"|@|")
	FileWriteLine($file, "4|@|"&$4&"|@|")
	FileWriteLine($file, "5|@|"&$5&"|@|")
	FileClose($file)
Next
_ExcelBookClose($oExcel)


Хочу получать название изображения, затем сохранить изображение с тем же именем в том же каталоге.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
armenxxx1,
Мой вариант (тот же принцип, что и у WSWR). Проверял на Excel 2003.
Код:
#include <Excel.au3>
#include <File.au3>

Local $i_Err = 13, $sFilePath = @ScriptDir & '\x.xls', $oExcel, $sTempDir = @ScriptDir & '\Temp\', $sTemp = 'Images', _
		$sImagesDir = $sTempDir & $sTemp & '.files\', $aImages

Do
	$oExcel = _ExcelBookOpen($sFilePath, 0)
	If @error Then ExitLoop
	If Not FileExists($sTempDir) Then
		If Not DirCreate($sTempDir) Then ExitLoop
	EndIf
	_ExcelBookSaveAs($oExcel, $sTempDir & $sTemp, 'html', 0, 1)
	If @error Then ExitLoop
	If Not FileExists($sImagesDir) Then ExitLoop
	$aImages = _FileListToArray($sImagesDir, '*.jpg', 1)
	If @error Then ExitLoop
	For $i = 1 To $aImages[0] Step 2
		FileMove($sImagesDir & $aImages[$i], @ScriptDir & '\' & $aImages[$i], 1)
	Next
	$i_Err = 0
Until 1
If IsObj($oExcel) Then _ExcelBookClose($oExcel)
DirRemove($sTempDir, 1)
Exit $i_Err

armenxxx1 [?]
Хочу получать название изображения, затем сохранить изображение с тем же именем в том же каталоге.
Какое название изображения Вы хотите получить?
 
Автор
A

armenxxx1

Продвинутый
Сообщения
155
Репутация
56
Хочу получать название изображения и сохранит в файле, затем сохранить изображение с тем же именем в том же каталоге.

 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
armenxxx1,
Если Вам обязательно нужно получить названия картинок из Excel, то можно так попробовать сделать, вроде работает у меня (Excel 2003 и Windows 7 32).
Код:
#include <Excel.au3>
#include <File.au3>

Local $i_Err = 13, $sFilePath = @ScriptDir & '\x.xls', $oExcel, $sTempDir = @ScriptDir & '\Temp\', $sTemp = 'Images', _
		$sImagesDir = $sTempDir & $sTemp & '.files\', $aImages, $a_Names[1], $iCount, $hFile

Do
	$oExcel = _ExcelBookOpen($sFilePath, 0)
	If @error Then ExitLoop
	$oShapes = $oExcel.ActiveSheet.Shapes
	ReDim $a_Names[$oExcel.ActiveSheet.Shapes.Count + 1]
	For $oShape In $oShapes
		If $oShape.Type = 13 Then
			$a_Names[0] += 1
			ConsoleWrite($oShape.Name & @LF)
			$a_Names[$a_Names[0]] = $oShape.Name & '.jpg'
		EndIf
	Next
	If Not $a_Names[0] Then ExitLoop
	If Not FileExists($sTempDir) Then
		If Not DirCreate($sTempDir) Then ExitLoop
	EndIf
	_ExcelBookSaveAs($oExcel, $sTempDir & $sTemp, 'html', 0, 1)
	If @error Then ExitLoop
	If Not FileExists($sImagesDir) Then ExitLoop
	$aImages = _FileListToArray($sImagesDir, '*.jpg', 1)
	If @error Then ExitLoop
	$hFile = FileOpen(@ScriptDir & '\ImagesFiles.txt', 2)
	For $i = 1 To $aImages[0] Step 2
		$iCount += 1
		If FileMove($sImagesDir & $aImages[$i], @ScriptDir & '\' & $a_Names[$iCount], 1) Then
			FileWrite($hFile, @ScriptDir & '\' & $a_Names[$iCount] & @CRLF)
		EndIf
	Next
	$i_Err = 0
Until 1
If IsObj($oExcel) Then _ExcelBookClose($oExcel)
If $hFile Then FileClose($hFile)
DirRemove($sTempDir, 1)
Exit $i_Err
 
Верх