Обработка входного файла Excel и сериализация его строк

Мне нужно решить упражнение, но я не могу решить одну ошибку. У меня не так много знаний о языке Бу, извините. Мой код:

public class Item (IIDataReaderLoadable):
  Sequence as long
  Code as string
  Description as string
  Weight as decimal
  Id as Guid


  def LoadFromReader(reader as IDataReader):
    Sequence = long.Parse(reader[0].ToString());
    Code = reader[1].ToString();
    Weight = decimal.Parse(reader[2].ToString());
    Description = reader[3].ToString();
    Id = Guid.Parse(reader[4].ToString());
  TableName as string:  
    get:
        return "Hoja1$"


 operation read_MasterData_etlexcel:
   log = ProcessContext.GetLogger()
   file = ProcessContext.InputFile
   log.Info("Reading $file")
   for Data in EntityReader[of Item].Read(file):
       yield Row.FromObject(Data)

 operation print_etlexcel:
   log = ProcessContext.GetLogger()
   for row in rows:
      log.Info(row.ToString())
      yield row

def serialize_row(it as Object, id as Guid):
   serializer = XmlSerializer(typeof(Item))
   writer = FileStream("output" + id.ToString() +".xml", FileMode.Create);
   serializer.Serialize(writer, it);
   writer.Close();

serialize_row(Item, Item.Id)

process process_owners_etlexcel:
   read_MasterData_etlexcel()
   print_etlexcel()

Когда я запускаю его в командном окне, я получаю следующую ошибку:

2018-05-14 14:18:44.0479 [Error] [Mss.Etl.DSLLoader.EtlSetup] Cannot execute ./e
xcelfile/import.boo BCE0000: C:\Program Files\Mecalux\GnaService2015\excelfile\i
mport.boo(57,30): BCE0020: Boo.Lang.Compiler.CompilerError: An instance of type
'Mss.Item' is required to access non static member 'Id'.

Я хочу прочитать файл Excel, который содержит несколько столбцов, и мне нужно создать бу-скрипт, который восстанавливает содержимое моего файла Excel, затем мне нужно сопоставить каждую строку из файла Excel с объектом вашего класса Ítem и сериализовать объект в файле XML

Спасибо


person Maria    schedule 14.05.2018    source источник
comment
Какой язык? phynton ? Это питон?   -  person sniperd    schedule 14.05.2018
comment
Да, он использует финтоновый язык   -  person Maria    schedule 14.05.2018
comment
Хорошо спасибо. Я отредактировал это.   -  person Maria    schedule 14.05.2018
comment
Привет, Мария, насколько я понимаю, у тебя большие проблемы с пониманием python. Это совсем не похоже на python. Возможно, выполнение нескольких руководств поможет решить ваши проблемы (и особенно: множество проблем, которые в противном случае возникнут) намного быстрее, чем просить ответ.   -  person JE_Muc    schedule 14.05.2018
comment
Привет, действительно язык бу, он основан на языке Python,   -  person Maria    schedule 14.05.2018
comment
О, так что вам, возможно, следует заменить тег python и информацию о том, что у вас мало знаний о python, на boo...   -  person JE_Muc    schedule 14.05.2018
comment
Это может вам помочь: justinmchase. com/2008/05/04/   -  person justin.m.chase    schedule 15.06.2018
comment
Кроме того, boo и python — совершенно разные языки, хотя синтаксически boo вдохновлен python. Он работает только в CLR и имеет ряд особенностей и отличий от boo.   -  person justin.m.chase    schedule 15.06.2018


Ответы (1)


Ошибка в этой строке:

serialize_row(Item, Item.Id)

Поле Item.Id является полем-членом, а не статическим полем, что означает, что вам нужен экземпляр. Похоже, вы называете это там статическим, поэтому он взрывается. Я не уверен, какое решение, потому что у вас есть пара макросов, которые не определены в примере кода, поэтому я не уверен, что они делают, но я думаю, вам нужно либо удалить эту строку, либо передать идентификатор участника или случайный.

Я должен предположить, что это решение:

item = Item()
serialize_row(item, item.Id)
person justin.m.chase    schedule 15.06.2018