À l'origine, j'ai essayé d'ouvrir un fichier XML avec Excel. Mais comme cela prend beaucoup de temps j'ai analysé le XML moi-même dans un fichier texte délimité par des tabulations. Je pensais avoir trouvé la bonne syntaxe sur internet. J'ai essayé le code ci-dessous en utilisant les valeurs que j'ai enregistrées avec une macro Excel. J'ai un fichier délimité par des tabulations de 18 colonnes. L'erreur apparaît dans la dernière ligne du code ci-dessous lors de l'appel de la méthode "Worksheets".Comment ouvrir un fichier texte délimité par des tabulations dans Excel en utilisant Perl et OLE?
Message d'erreur: Impossible d'appeler la méthode "Worksheets" sans référence de colis ou objet à la ligne ./PostProcessingDev.pl 70.
use Win32::OLE;
use Win32::OLE::Const 'Microsoft Excel';
Win32::OLE->Option(Warn => 3);
use strict;
my $Excel;
my $Sheet;
my $Workbook;
$Excel = CreateObject OLE "Excel.Application";
$Workbook = $Excel->Workbooks->OpenText({Filename =>"$inSelf->{'TXT'}",
Origin => xlMSDOS,
StartRow => 1,
DataType => xlDelimited,
TextQualifier => xlDoubleQuote,
ConsecutiveDelimiter => "False",
Tab => "True",
Semicolon => "False",
Comma => "False",
Space => "False",
Other => "False",
FieldInfo => [[1, xlTextFormat],
[2, xlTextFormat],
[3, xlTextFormat],
[4, xlTextFormat],
[5, xlTextFormat],
[6, xlTextFormat],
[7, xlTextFormat],
[8, xlTextFormat],
[9, xlTextFormat],
[10, xlTextFormat],
[11, xlTextFormat],
[12, xlTextFormat],
[13, xlTextFormat],
[14, xlTextFormat],
[15, xlTextFormat],
[16, xlTextFormat],
[17, xlTextFormat],
[18, xlTextFormat]],
TrailingMinusNumbers => "True"});
$Sheet = $Workbook->Worksheets(1);
Vous ne devez pas analyser les fichiers xSV par des séparations/expressions rationnelles. Identique à CSV, utilisez un module approprié (Texte: CSV_CS) – DVK
Merci pour votre réponse rapide. Non, je n'utilise pas Excel comme analyseur. La partie d'analyse que j'ai écrite moi-même comme je ne peux ni utiliser ni installer les mudules requis. Je fais tout à l'intérieur des tableaux Pearl. Le TSV ainsi que le fichier Excel est la sortie. Comme l'écriture Excel Cell by Cell est de ralentir (dizaines de milliers de lignes) par rapport à l'ouverture d'un TSV, je veux juste ouvrir le TSV et le stocker comme Excel. En essayant votre code sur un fichier texte à 4 lignes, il reste dans la méthode OpenText. Comment puis-je voir ce qui se passe? Puis-je déboguer les méthodes OLE? – user617474
Je n'ai pas bien compris ce que vous voulez. Si vous écrivez CSV avec l'extension .CSV, Excel est associé et est capable de l'ouvrir directement. Par débogage 'OLE', c'est un peu compliqué, mais vous pouvez mettre' $ Excel -> {Visible} = 1; 'après l'initialisation et vous pouvez voir ce qui se passe dans Excel. – bvr