вторник, 24 марта 2009 г.

Крик души ;)

public static Testplan ParseFile(string filePath)
{
ApplicationClass excel = new ApplicationClass();
excel.Visible = true;
excel.Workbooks.Open(filePath, false, false, null, null, null,
true, null, null, null, null, null, null,
null, null);

// А все таки фигово, что в 3-м Сишарпе нет именованных аргументов
// и аргументов по умолчанию. Ждем-с 4-го Сишарпа :(

return new Testplan(null, null, null);
}


Тоже самое, только на Perl:

my $Book = $Excel->Workbooks->Open( {
FileName => $FILE_NAME,
UpdateLinks => 0,
ReadOnly => 1,
IgnoreReadOnlyRecommended => 1,
}
) or die("Cannot open file $FILE_NAME");


UPD:

На самом деле, пропущенные параметры нужно заполнять при помощи значения Missing.Value, которое описано в System.Reflection. В противном случае (если использовать null), можно нарваться на Exception.



excel.Workbooks.Open(filePath, false, false, Missing.Value, Missing.Value, Missing.Value,
true, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value);

3 коммент.:

Анонимный комментирует...

Именованые аргументы заменит ассоциативный массив

DmytroZ комментирует...

Да, но это будет выглядеть все равно не очень красиво. В 4-м шарпе оно наконец-то будет как надо.
К тому же, Workbooks.Open не имеет перегрузки, принимающую ассоциативный массив :(

Толік комментирует...

тут обращаться нужно не к шарпу, язык не виноват, а к майкрософту, который так и не избавился от привычки тулить по 15 аргументов в одну ф-ция, в WinAPI это еще хоть как-то понять можно, но тут...

Отправить комментарий

 

.NET ate my MOSK;. Powered By Blogger © 2009 Bombeli | Theme Design: ooruc