Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 24. 8. 2022 09:39:22

barevnej
Člen
Registrace: 6. 8. 2015
Příspěvků: 171

Export oblast do textového PHP (VYŘEŠENO)

Vaše rady tady jsou opravdu excelentní a v dnešní nelehké době mi moc pomáhají.
K věci. Generuji si část PHP pomocí tabulky a ten pak kopíruji a ukládám jako text do souboru "stav.php"
_
➊ Exportovala by se předem danná oblast dat, třeba viz příklad C2G6 (určoval bych v makru)
2022-08-24_11-00.png
_
➋ Před "<?php" a za "?>" výsledný export by se doplnil text který v tabulce není tak aby výsledek vypad takto.

<?php

$bezEU1 = '8,69';	$sEU1 = '10,51';	$daEU1 = '<!-- -->';	$dbEU1 = '';	$dcEU1 = '';
$bezEU2 = '9,78';	$sEU2 = '11,83';	$daEU2 = '<!-- -->';	$dbEU2 = '';	$dcEU2 = '';
$bezEU3 = '13,55';	$sEU3 = '16,40';	$daEU3 = '<!-- -->';	$dbEU3 = '';	$dcEU3 = '';
$bezEU4 = '16,32';	$sEU4 = '19,75';	$daEU4 = '<!--';	$dbEU4 = '-->';	$dcEU4 = '</select><!--';
$bezEU5 = '21,06';	$sEU5 = '25,48';	$daEU5 = '<!-- -->';	$dbEU5 = '';	$dcEU5 = '';

?>

_
➌ Uložilo by se ve stejné složce kde se nachází tabulka. Název by byl vždy stejný a to "stav.php", již se ve složce tento soubor bude nacházet takže jej export bude přepisovat.
_
_
Doteď to dělám ručně tak že otevřu textový editor a zkopíruji tabulku do něj ručně, toto by mi urychlilo práci.

Editoval barevnej (26. 8. 2022 08:06:01)

Offline

#2 24. 8. 2022 12:48:30

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Export oblast do textového PHP (VYŘEŠENO)

Otestujte toto :

Sub DejMatici
Dim oCell As Object 
oCell = ThisComponent.CurrentController.getSelection() 
With oCell.RangeAddress 
SH = .Sheet 
SC = .StartColumn 
SR = .StartRow
EC = .EndColumn 
ER = .EndRow
End With 
oSheet = ThisComponent.Sheets(SH)
Dim Vypis as string
Vypis = Vypis & "<?php" + Chr(10) + Chr(13) 
For i = SC To EC
For j = SR To ER
IF j = ER Then
Vypis = Vypis & oSheet.getCellByPosition(i, j).String + Chr(10)
Else
Vypis = Vypis & oSheet.getCellByPosition(i, j).String + Chr(9)
End If
Next j
Next i
Vypis = Vypis + Chr(13) & "?>"
Ulozit_PHP(Vypis)
End Sub

sub Ulozit_PHP(ByVal Vypis as string)
sVar = ConvertFromUrl(ThisComponent.URL)
iVar = Len(svar)
sTimer = Timer()
For i = iVar To 1 step -1
IF Mid(svar,i,1) = "/" or Mid(svar,i,1) = "\" then
sVal = left(sVar,i)
Exit For
end If
next i
MyUrl = ConvertToUrl(sVal & "stav.php")	
Dim arg(0) As New com.sun.star.beans.PropertyValue
arg(0).Name = "Hidden" 
arg(0).Value = True
oWName = ConvertToUrl(Nahrady)															
TestDoc = StarDesktop.loadComponentFromURL( "private:factory/swriter", "_blank", 0, arg())															
dim document   as object
dim dispatcher as object
document   = TestDoc.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = MyUrl
args1(1).Name = "FilterName"
args1(1).Value = "Text"
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
Dim oText As Object																	
  		oText = TestDoc.getText()															
		oText.insertString(oText.getStart(),Vypis, false)	
TestDoc.Store()
TestDoc.dispose	
end sub

PS

     Funguje to na vybraný úsek v Calcu otevírá i zavárá se to skrytě. Když tak si to vybavte MsgBoxem, že je hotovo, nebo zakomentujte následující řádky například pomocí REM
REM arg(0).Name = "Hidden"
REM arg(0).Value = True
     Nebo například také aby se sešit php sám nezavíral - asi to znáte omlouvám se.
REM TestDoc.dispose

Editoval neutr (24. 8. 2022 12:55:32)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 24. 8. 2022 13:28:16

barevnej
Člen
Registrace: 6. 8. 2015
Příspěvků: 171

Re: Export oblast do textového PHP (VYŘEŠENO)

Nyní to vygeneruje po spoštění makra "DejMatici" správně ve stejné složce i název "stav.php" který obsahuje

<?php



?>

Ovšem data uprostřed chybí, kde mám v tom makru navolit oblast například C2G6
_
ps: před poslední end sub jsem si dal MsgBox ("Exportován stav.php") smile

Offline

#4 24. 8. 2022 14:04:05

barevnej
Člen
Registrace: 6. 8. 2015
Příspěvků: 171

Re: Export oblast do textového PHP (VYŘEŠENO)

Aha jsem blbej a nečtu smile
SC = 2
SR = 1
EC = 6
ER = 5

Jen je zvláštní jak jede jakoby ze shora dolů, jako by jste četl čínský text. Asi to nebude mít na výsledek vliv, jen je to opticky jakoby nepřehledné.

Offline

#5 24. 8. 2022 14:30:14

barevnej
Člen
Registrace: 6. 8. 2015
Příspěvků: 171

Re: Export oblast do textového PHP (VYŘEŠENO)

Tak už jsem to vše poupravil a pochopil a vše funguje jak má, dokonce i to aby to šlo po řádkách a ne sloupcích. Moc děkuji.

Sub DejMatici
Dim oCell As Object 
oCell = ThisComponent.CurrentController.getSelection() 
With oCell.RangeAddress 
SH = .Sheet 
SC = 1 '	začátek řádku (počítá se od nuly)
SR = 2 '	začátek sloupce (počítá se od nuly)
EC = 5 '	počet řádků od prvního kodu (počítá se od jedničky)
ER = 5 '	počet sloupců od prvního kodu (počítá se od jedničky)
End With 
oSheet = ThisComponent.Sheets(SH)
Dim Vypis as string
Vypis = Vypis & "<?php" + Chr(10) + Chr(13) 
For i = SC To EC
For j = SR To ER
IF j = ER Then
Vypis = Vypis & oSheet.getCellByPosition(j, i).String + Chr(10)
Else
Vypis = Vypis & oSheet.getCellByPosition(j, i).String + Chr(9)
End If
Next j
Next i
Vypis = Vypis + Chr(13) & "?>"
Ulozit_PHP(Vypis)
End Sub

sub Ulozit_PHP(ByVal Vypis as string)
sVar = ConvertFromUrl(ThisComponent.URL)
iVar = Len(svar)
sTimer = Timer()
For i = iVar To 1 step -1
IF Mid(svar,i,1) = "/" or Mid(svar,i,1) = "\" then
sVal = left(sVar,i)
Exit For
end If
next i
MyUrl = ConvertToUrl(sVal & "stav.php")	
Dim arg(0) As New com.sun.star.beans.PropertyValue
arg(0).Name = "Hidden" 
arg(0).Value = True
oWName = ConvertToUrl(Nahrady)															
TestDoc = StarDesktop.loadComponentFromURL( "private:factory/swriter", "_blank", 0, arg())															
dim document   as object
dim dispatcher as object
document   = TestDoc.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = MyUrl
args1(1).Name = "FilterName"
args1(1).Value = "Text"
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
Dim oText As Object																	
  		oText = TestDoc.getText()															
		oText.insertString(oText.getStart(),Vypis, false)	
TestDoc.Store()
TestDoc.dispose	
MsgBox ("Exportován stav.php")
end sub

Editoval barevnej (24. 8. 2022 14:31:57)

Offline

Zápatí