#!/usr/bin/perl use warnings; use strict; use feature qw( say ); use utf8; use Win32 qw( ); my ($active_cp, $input_cp, $output_cp); BEGIN { $active_cp = "cp" . Win32::GetACP(); $input_cp = "cp" . Win32::GetConsoleCP(); $output_cp = "cp" . Win32::GetConsoleOutputCP(); } use open ':encoding(UTF-8)'; BEGIN { binmode(STDIN, ":encoding($input_cp)"); binmode(STDOUT, ":encoding($output_cp)"); binmode(STDERR, ":encoding($output_cp)"); } use Encode qw( encode decode ); use Win32::OLE qw( in with ); use Win32::OLE::Const 'Microsoft Excel'; { # Decoded string aka string of Unicode Code Points my $german_text = 'Fräsen und ndk (Kamera - Fräsaufnahme)'; my $xl_form = "C:/tmp/german.xls"; my $Excel = Win32::OLE->GetActiveObject('Excel.Application') or do { Win32::OLE->new('Excel.Application', 'Quit'); die("Error"); }; $Excel->{DisplayAlerts} = 1; my $Book = $Excel->Workbooks->Open($xl_form); my $Sheet = $Book->Worksheets("DRC"); $Sheet->Range("B2")->{Value} = encode($active_cp, $german_text); }