Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.67 KB | None | 0 0
  1. private SortedDictionary<string, Dados[]> CarregaFicheiro(string ficheiro)
  2. {
  3. Excel.Application application;
  4. SortedDictionary<string, Dados[]> dados = new SortedDictionary<string, Dados[]>();
  5. application = new Excel.Application();
  6. Excel.Workbook workbook = application.Workbooks.Open(ficheiro);
  7. Excel.Worksheet sheet = (Excel.Worksheet)workbook.Sheets[1];
  8. Excel.Range excelRange = sheet.UsedRange;
  9. object[,] valueArray = (object[,])excelRange.get_Value(Excel.XlRangeValueDataType.xlRangeValueDefault);
  10. var rows = valueArray.GetUpperBound(0);
  11. var cols = valueArray.GetUpperBound(1);
  12. int cabecalho = 0;
  13. for (int row = 1; row < rows; row++)
  14. {
  15. if (valueArray[row, (int)ColunasExcel.Referencia] != null)
  16. {
  17. if (cabecalho == 0 || valueArray[row, (int)ColunasExcel.Entidade].ToString().ToLower().Equals("entidade"))
  18. {
  19. cabecalho = row;
  20. }
  21. else
  22. {
  23. if (!dados.ContainsKey((string)valueArray[row, (int)ColunasExcel.Referencia].ToString()))
  24. {
  25. Dados[] __dados = new Dados[1];
  26. __dados[0] = new IntegradorCompras.Dados();
  27. __dados[0].Entidade = valueArray[row, (int)ColunasExcel.Entidade].ToString();
  28. __dados[0].Artigo = valueArray[row, (int)ColunasExcel.Artigo].ToString();
  29. __dados[0].Descricao = valueArray[row, (int)ColunasExcel.ArtigoDescricao].ToString();
  30. __dados[0].Quantidade = (double)valueArray[row, (int)ColunasExcel.Quantidade];
  31. __dados[0].UnidadeBase = valueArray[row, (int)ColunasExcel.UnidadeBase].ToString();
  32.  
  33.  
  34. if (valueArray[row, (int)ColunasExcel.Lote] != null)
  35. {
  36. __dados[0].Lote = (string)valueArray[row, (int)ColunasExcel.Lote];
  37. }
  38. if (valueArray[row, (int)ColunasExcel.ValidadeLote] != null)
  39. {
  40. __dados[0].DataValidade = (DateTime)valueArray[row, (int)ColunasExcel.ValidadeLote];
  41. }
  42. if (valueArray[row, (int)ColunasExcel.Armazem] != null)
  43. {
  44. __dados[0].Armazem = (string)valueArray[row, (int)ColunasExcel.Armazem];
  45. }
  46. if (valueArray[row, (int)ColunasExcel.Localizacao] != null)
  47. {
  48. __dados[0].Localizacao = (string)valueArray[row, (int)ColunasExcel.Localizacao];
  49. }
  50. __dados[0].PrecUnitario = (double)valueArray[row, (int)ColunasExcel.PrecUnitario];
  51. __dados[0].Moeda = (string)valueArray[row, (int)ColunasExcel.Moeda];
  52. __dados[0].Cambio = (double)valueArray[row, (int)ColunasExcel.Cambio];
  53. __dados[0].CambioMBase = (double)valueArray[row, (int)ColunasExcel.CambioMBase];
  54. __dados[0].CambioMAlt = (double)valueArray[row, (int)ColunasExcel.CambioMAlt];
  55.  
  56. __dados[0].CodIva = valueArray[row, (int)ColunasExcel.CodIva].ToString();
  57. __dados[0].Referencia = valueArray[row, (int)ColunasExcel.Referencia].ToString();
  58. if (valueArray[row, (int)ColunasExcel.DataDoc] != null)
  59. {
  60. __dados[0].DataDoc = (DateTime)valueArray[row, (int)ColunasExcel.DataDoc];
  61. }
  62. __dados[0].Resultado = String.Empty; //valueArray[row, (int)ColunasExcel.Resultado].ToString();
  63.  
  64. dados.Add(__dados[0].Referencia, __dados);
  65. }
  66. else
  67. {
  68. Dados[] __itens = dados[(string)valueArray[row, (int)ColunasExcel.Referencia].ToString()];
  69.  
  70. Dados __dados = new Dados();
  71.  
  72. __dados.Entidade = valueArray[row, (int)ColunasExcel.Entidade].ToString();
  73. __dados.Artigo = valueArray[row, (int)ColunasExcel.Artigo].ToString();
  74. __dados.Descricao = valueArray[row, (int)ColunasExcel.ArtigoDescricao].ToString();
  75. __dados.Quantidade = (double)valueArray[row, (int)ColunasExcel.Quantidade];
  76. __dados.UnidadeBase = valueArray[row, (int)ColunasExcel.UnidadeBase].ToString();
  77. if (valueArray[row, (int)ColunasExcel.Lote] != null)
  78. {
  79. __dados.Lote = (string)valueArray[row, (int)ColunasExcel.Lote];
  80. }
  81. if (valueArray[row, (int)ColunasExcel.ValidadeLote] != null)
  82. {
  83. __dados.DataValidade = (DateTime)valueArray[row, (int)ColunasExcel.ValidadeLote];
  84. }
  85. if (valueArray[row, (int)ColunasExcel.Armazem] != null)
  86. {
  87. __dados.Armazem = (string)valueArray[row, (int)ColunasExcel.Armazem];
  88. }
  89. if (valueArray[row, (int)ColunasExcel.Localizacao] != null)
  90. {
  91. __dados.Localizacao = (string)valueArray[row, (int)ColunasExcel.Localizacao];
  92. }
  93. __dados.PrecUnitario = (double)valueArray[row, (int)ColunasExcel.PrecUnitario];
  94. __dados.Moeda = (string)valueArray[row, (int)ColunasExcel.Moeda];
  95. __dados.Cambio = (double)valueArray[row, (int)ColunasExcel.Cambio];
  96. __dados.CambioMBase = (double)valueArray[row, (int)ColunasExcel.CambioMBase];
  97. __dados.CambioMAlt = (double)valueArray[row, (int)ColunasExcel.CambioMAlt];
  98. __dados.CodIva = valueArray[row, (int)ColunasExcel.CodIva].ToString();
  99. __dados.Referencia = valueArray[row, (int)ColunasExcel.Referencia].ToString();
  100. if (valueArray[row, (int)ColunasExcel.DataDoc] != null)
  101. {
  102. __dados.DataDoc = (DateTime)valueArray[row, (int)ColunasExcel.DataDoc];
  103. }
  104. __dados.Resultado = String.Empty; //valueArray[row, (int)ColunasExcel.Resultado].ToString();
  105. __itens = __itens.Add(__dados);
  106. dados[(string)valueArray[row, (int)ColunasExcel.Referencia].ToString()] = __itens;
  107. }
  108. }
  109. }
  110. }
  111.  
  112. workbook.Close(false, ficheiro, null);
  113.  
  114. application.Quit();
  115. Marshal.ReleaseComObject(excelRange);
  116. Marshal.ReleaseComObject(sheet);
  117. Marshal.ReleaseComObject(workbook);
  118. Marshal.ReleaseComObject(application);
  119. GC.Collect();
  120. GC.WaitForPendingFinalizers();
  121. GC.Collect();
  122. GC.WaitForPendingFinalizers();
  123. return dados;
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement