Archive for the ‘Programmierung’ Category.

Excel-Automation mit Powershell

Hier mal ein kurzes Beispiel für COM-Automation mit Excel.

$excel = New-object -comobject Excel.Application
$excel.Visible = $false
$excel.DisplayAlerts = $false
$workbook = $excel.Workbooks.Add()
$sheet = $workbook.Worksheets.Item(1)
$sheet.Name = 'Hallo Welt'
$workbook.SaveAs('C:\hallowelt.xlsx')
$workbook.Close()
$excel.Quit()

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Programmieren für Einsteiger mit Microsoft Small Basic

Von Microsoft Small Basic gibt es jetzt die siebente Community Preview. Bei Small Basic handelt es um eine Programmiersprache für Einsteiger, die mit wenigen Schlüsselwörtern auskommt. Microsoft selbst schreibt auf http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx:

Microsoft Small Basic aims to make computer programming accessible to beginners.

Ein PDF-Tutorial gibt es auch: http://download.microsoft.com/download/9/0/6/90616372-C4BF-4628-BC82-BD709635220D/Introducing%20Small%20Basic.pdf.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Skriptsprachen zur Windows-Automation

Neben Powershell gibt es noch eine Reihe anderer Skriptsprachen, mit denen sich immer wiederkehrende Aufgaben unter Windows bequemer erledigen lassen:

  • AutoIt
  • AutoHotkey, das auch von der c’t Toolsammlung ac’tivAid genutzt wird

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

PHPExcel

Habe in einer alten c’t einen Hinweis auf PHPExcel gefunden, eine Bibliothek, die dynamisch Excel Dokumente erzeugen kann.

Hier mal ein „Hello World!“ Beispiel von der Webseite http://phpexcel.codeplex.com:

<?php
/** Error reporting */
error_reporting(E_ALL);
 
/** Include path **/
ini_set('include_path', ini_get('include_path').';../Classes/');
 
/** PHPExcel */
include 'PHPExcel.php';
 
/** PHPExcel_Writer_Excel2007 */
include 'PHPExcel/Writer/Excel2007.php';
 
// Create new PHPExcel object
echo date('H:i:s') . " Create new PHPExcel object\n";
$objPHPExcel = new PHPExcel();
 
// Set properties
echo date('H:i:s') . " Set properties\n";
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");
 
 
// Add some data
echo date('H:i:s') . " Add some data\n";
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello');
$objPHPExcel->getActiveSheet()->SetCellValue('B2', 'world!');
$objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Hello');
$objPHPExcel->getActiveSheet()->SetCellValue('D2', 'world!');
 
// Rename sheet
echo date('H:i:s') . " Rename sheet\n";
$objPHPExcel->getActiveSheet()->setTitle('Simple');
 
 
// Save Excel 2007 file
echo date('H:i:s') . " Write to Excel2007 format\n";
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
 
// Echo done
echo date('H:i:s') . " Done writing file.\r\n";

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Pseudo-Adressen generieren

Vor einiger Zeit habe ich mal ein paar Zeilen Java zusammengeschustert, um Pseudo-Adressen zu generieren. Hier der Quellcode, der weder sonderlich kompakt noch schön ist, seinen Zweck aber erfüllt:

/**
 *
 * @author Uwe Ziegenhagen, www.uweziegenhagen.de
 */
 
import java.util.*;
 
public class Addressmaker {
    static java.text.DecimalFormat format =  new java.text.DecimalFormat("00000");
    static String[] vornamen = new String[]{"Uwe","Andreas","Max","Moritz","Susi","Steffi","Janine","Tim","Tom","Marko","Hans","Thomas","Maria",
    "Bernd","Mandy","Ben","Thorsten","Sabine","Isabell","Doreen", "Nicole","Sabrina","Jenny","Klaus","Heinz","Sabrina"};
 
    static String[] nachnamen = new String[]{"Meier","Meyer","Mayer","Müller","Schulze","Lehmann",
    "Köster","Schmidt","Schuster","Wagner","Schmied","Küster","Möller"};
 
    static String[] initial = new String[]{" "," "," "," A. "," B. "," C. "," D. "," E. "," "," "};
    static String[] adressinitial = new String[]{"","a","b","c","d","","","","","",""};
    static String[] adresszusatz = new String[]{"bei Schmidt","c/o Schmidt","p.Adr. Max Mustermann"};
 
    static String[] ortsprefix = new String[]{"Wald","Wiesen","Groß","Klein","Mittel","Ober","Ham","Nieder","Alt","Alten",
    "Königs","Langen","Moos","Mühl","Morgen","Schön","Tannen","Vogel","Wolfen","Kirch","Bären","Heide","Hohen","Breiten","Ehren","Eber","Fichten","Grün"};
 
    static String[] ortssuffix = new String[]{"heim","dorf","hausen","burg","ow","au","furt","stein","aue","finow","tal","thal"};
    static String[] strassenprefix = new String[]{"Wald","Wiesen","Amsel","Drossel","Finken","Wasser","Sonnen","Schiller","Goethe","Nachtigall","Spatzen"};
    static String[] strassensuffix = new String[]{"straße","weg","gasse","allee","platz"};
    static String[] domains = new String[]{".info",".de",".com",".info",".ac.uk",".ru",".ac.jp"};
 
    static String vname = "";
    static String nname = ""; 
 
    public static void main(String[] args) {
        Random generator = new Random(new Date().getTime());
 
        int wieoft = 100;
        boolean email = true;
 
        for (int i=0;i<wieoft;i++){
            vname = vornamen[generator.nextInt(vornamen.length)];
            nname = nachnamen[generator.nextInt(nachnamen.length)];
 
        System.out.print(vname + initial[generator.nextInt(initial.length)] +  
                 nname + "\n");
 
        if (generator.nextInt(100)<3){
                    System.out.println(adresszusatz[generator.nextInt(adresszusatz.length)]);   
 
        }        
 
        System.out.print(strassenprefix[generator.nextInt(strassenprefix.length)] + 
                strassensuffix[generator.nextInt(strassensuffix.length)]+ " " + generator.nextInt(99) + adressinitial[generator.nextInt(adressinitial.length)] +  "\n");
 
        System.out.print(format.format(generator.nextInt(99999)) + " " + 
                ortsprefix[generator.nextInt(ortsprefix.length)] + 
                ortssuffix[generator.nextInt(ortssuffix.length)]+"\n");
 
        if (email==true){
            vname = vname.replaceAll("ö", "oe");
            vname = vname.replaceAll("ä", "ae");
            vname = vname.replaceAll("ü", "ue");
            nname = nname.replaceAll("ö", "oe");
            nname = nname.replaceAll("ä", "ae");
            nname = nname.replaceAll("ü", "ue");
            System.out.println(vname.toLowerCase() + "." + nname.toLowerCase() + "@" + ortssuffix[generator.nextInt(ortssuffix.length)] + domains[generator.nextInt(domains.length)]);
        }
 
        System.out.print("\n");
        }
 
    }
 
}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Geniale Visualisierung von Geschichtsdaten

Durch Zufall habe ich eben eine geniale Visualisierung von Geschichtsdaten gefunden, die mit Processing (Arduino lässt grüßen) umgesetzt wurde. Gezeigt wird der Niedergang der Weltreiche Großbritannien, Spanien, Portugal und Frankreich im 19. und 20. Jahrhundert.

Hier der Link: http://vimeo.com/6437816.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Background-Jobs mit Powershell 2

http://technet.microsoft.com/en-us/library/dd315273.aspx hat Informationen und Beispiele, wie man Jobs in der Powershell 2.0 im Hintergrund laufen lassen kann.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Go, eine neue Programmiersprache von Google

Google hat eine neue Programmiersprache rausgebracht, Details unter http://golang.org/

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Arduino: Temperaturen aus der Datenbank auslesen

Da die Temperatur-Daten jetzt in der Datenbank gespeichert werden, müssen wir sie auch auslesen:

<?php
 
echo "<h1>Temperaturen im Wohnzimmer</h1>";
 
$link = mysql_connect("<server>", <user>", "<password>") or 
	die("Keine Verbindung möglich: " . mysql_error());
 
mysql_select_db("<Database>") or die("Auswahl der Datenbank fehlgeschlagen");
// Die letzten 10 Werte
$query = "SELECT * FROM temperature ORDER BY TIMESTAMP DESC LIMIT 1,10"; 
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
 
while($row = mysql_fetch_object($result))
{
    echo $row->Timestamp ." ".$row->Temperature."<br/>";
}
 
mysql_close($link);
?>

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Mit Excel Dubletten filtern

Kürzlich musste ich wissen, welche Elemente in einer Excelliste nur einmal vorkamen. Die Lösung liegt in der Verwendung der SUMMEWENN-Funktion, das Bild zeigt wie.

excel_summewenn

Um Dubletten herauszulöschen hat Excel auch eine entsprechende Funktion unter Daten => Duplikate entfernen.

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website