Здравствуйте, задача такая, есть 2 таблицы excel, нужно их вывести в два листбокса, а в 3 по кнопке объединить, собственно, объединить их так, чтобы в первой колонке был id, название товара, цвет, размер и поставщик. По сути, нужно добавить колонку id их 2 таблицы в 1-ую таблицу, но проблема в том, что я что-то намудрила и оно соединяет не по тем id. Помогите, если не сложно.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Excel = Microsoft.Office.Interop.Excel;
namespace laba_3.Pages
{
/// <summary>
/// Логика взаимодействия для StartWindowPage.xaml
/// </summary>
public partial class StartWindowPage : Page
{
public List<Data1> objects = new List<Data1>();
public List<Data1> objects2 = new List<Data1>();
public List<Data3> objects3 = new List<Data3>();
public class DataD
{
public string nameOfMaterial { get; set; }
public string color { get; set; }
public string size { get; set; }
public string supplier { get; set; }
public int id { get; set; }
}
public class Data1
{
public string nameOfMaterial { get; set; }
public string color { get; set; }
public string size { get; set; }
public string supplier { get; set; }
public int id { get; set; }
}
public class Data2
{
public string nameOfMaterial { get; set; }
public int id { get; set; }
}
public class Data3
{
public string nameOfMaterial { get; set; }
public string color { get; set; }
public string size { get; set; }
public string supplier { get; set; }
public int id { get; set; }
}
public StartWindowPage()
{
InitializeComponent();
}
private void ExitButtonClick(object sender, RoutedEventArgs e)
{
Environment.Exit(0);
}
private void JoinListButtonClick(object sender, RoutedEventArgs e)
{
//ERR
var result = from pl in objects
join t in objects2 on pl.nameOfMaterial equals t.nameOfMaterial
select new { nameOfMaterial = pl.nameOfMaterial, id = t.id, color = pl.color, size = pl.size, supplier = pl.supplier };
//ERR
var result2 = objects.Join(objects2, // второй набор
p => p.nameOfMaterial, // свойство-селектор объекта из первого набора
t => t.nameOfMaterial, // свойство-селектор объекта из второго набора
(p, t) => new { nameOfMaterial = p.nameOfMaterial, id = t.id, color = p.color, size = p.size, supplier = p.supplier });
foreach (var item in result)
{
ListBox33.Items.Add(item.nameOfMaterial.ToString());
ListBox33.Items.Add(item.id.ToString());
ListBox33.Items.Add(item.color.ToString());
ListBox33.Items.Add(item.size.ToString());
ListBox33.Items.Add(item.supplier.ToString());
}
}
private void ViewListsButtonClick(object sender, RoutedEventArgs e)
{
Excel.Application excelApp = new Excel.Application();
excelApp.Visible = false; // Отвечает за то, будет ли видимо приложен
string path = @"E:\laba_3\laba_3\excelTables\book1.xlsx";
excelApp.Workbooks.Open(path);
int row = 2;
ArrayList maping = new ArrayList();
Excel.Worksheet currentSheet = (Excel.Worksheet)excelApp.Workbooks[1].Worksheets[1];
while (currentSheet.get_Range("A" + row).Value2 != null)
{
for (char column = 'A'; column < 'E'; column++)
{
Excel.Range cell = currentSheet.get_Range(column.ToString() + row.ToString());
maping.Add(cell != null ? cell.Value2.ToString() : "");
}
row++;
}
excelApp.Quit();
Excel.Application excelApp2 = new Excel.Application();
excelApp2.Visible = false; // Отвечает за то, будет ли видимо приложен
string path22 = @"E:\laba_3\laba_3\excelTables\book2.xlsx";
excelApp2.Workbooks.Open(path22);
int row2 = 2;
ArrayList maping2 = new ArrayList();
Excel.Worksheet currentSheet2 = (Excel.Worksheet)excelApp2.Workbooks[1].Worksheets[1];
while (currentSheet2.get_Range("A" + row2).Value2 != null)
{
for (char column = 'A'; column < 'C'; column++)
{
Excel.Range cell = currentSheet2.get_Range(column.ToString() + row2.ToString());
maping2.Add(cell != null ? cell.Value2.ToString() : "");
}
row2++;
}
excelApp2.Quit();
for (int counter = 0; counter < maping.Count; counter += 4)
{
objects.Add(new Data1
{
nameOfMaterial = maping[counter].ToString(),
color = maping[counter + 1].ToString(),
size = maping[counter + 2].ToString(),
supplier = maping[counter + 3].ToString()
});
}
for (int counter = 0; counter < maping2.Count; counter += 2)
{
objects2.Add(new Data1
{
nameOfMaterial = maping2[counter].ToString(),
id = Convert.ToInt32(maping2[counter + 1])
});
}
foreach (var item in objects)
{
ListBox3.Items.Add(item.nameOfMaterial.ToString());
ListBox3.Items.Add(item.color.ToString());
ListBox3.Items.Add(item.size.ToString());
ListBox3.Items.Add(item.supplier.ToString());
}
foreach (var item in objects2)
{
ListBox2.Items.Add(item.nameOfMaterial.ToString());
ListBox2.Items.Add(item.id.ToString());
}
}
}
}