вы можете получить значение следующим образом
string str = (string)(range.Cells[row, col] as Excel.Range).Value2 ;
выбрать весь используемый диапазон
Excel.Range range = xlWorkSheet.UsedRange;
источник:
http: //csharp.net- informations.com/excel/csharp-read-excel.htm
пылающий
BinaryFormatter
в лучших случаях очень хрупкий, если вы что-то измените. Не в последнюю очередь, существуют огромные проблемы с автоматически реализуемыми свойствами, обфускациями , переименованием, строгим именованием и т. Д.
Насколько я помню, некоторые правила, касающиеся [OptionalField]
, просто изменились до того, как он был выпущен; Я полагаю, что проблема с устойчивостью к версиям на самом деле не сработала так легко, как планировалось.
Мой совет: если вы хотите сериализацию, устойчивую к версиям (то есть вы можете сериализовать ее сегодня и десериализовать в следующей версии вашего приложения) , тогда не используйте BinaryFormatter
; это (IMO) подходит только для передачи данных между той же версией (удаленное взаимодействие, AppDomain
s и т. д.).
Для работы между версиями, Я рекомендую сериализацию на основе контрактов; такие вещи, как XmlSerializer
и DataContractSerializer
(.NET 3.0), или для двоичного кода - protobuf-net или аналогичные инструменты. Все они намного лучше переносят версию (на самом деле, вам даже не нужно десериализовать ее в тот же Type
); плюс их можно использовать между платформами - так что вы можете сериализовать в .NET и десериализовать в java / C ++ / и т. д.