Привет, я хочу вставить некоторые данные из файла excel, я понятия не имею, как это сделать. поэтому файл excel выглядит следующим образом:
Empid| 1/01/2019|2/01/2019 | 3/01/2019
-------------------------------------------
1 | A | B | A
2 | B | A | B
3 | B | C | C
4 | A | A | A
а буквы {A , B , C} обозначают тип смены, я хочу вставить таблицу из файла excel в базу данных, чтобы она выглядела так:
Empid | Date | Shift
---------------------
1 |1/01/2019 | A
1 |2/01/2019 | B
1 |3/01/2019 | A
2 |1/01/2019 | B
2 |2/01/2019 | A
2 |3/01/2019 | B
3 |1/01/2019 | B
3 |2/01/2019 | C
3 |3/01/2019 | C
4 |1/01/2019 | A
4 |2/01/2019 | A
4 |3/01/2019 | A
большое спасибо.
спасибо :) извините за беспокойство.
Может быть, взгляните на Php офис. Это будет нелегко понять, но это, вероятно, поможет вам
Спасибо, я сделаю это сейчас, по крайней мере, теперь у меня есть отправная точка :)
Недавно я написал код для чего-то очень похожего. stackoverflow.com/questions/54252775/…
Потрясающе Спасибо ^_^ .
При сохранении данных в реляционной базе данных обязательно используйте правильные типы данных для этих данных.
@Variatus Код работал отлично, так как я хотел еще одну вещь, которую мне нужно добавить, он дал мне empid с Shift Column. Мне также нужна дата с ними, как я могу это сделать, еще раз большое спасибо.






Вот код, измененный в соответствии с вашими целями.
Sub TransposeData()
Const EmpidClm As String = "A" ' change as applicable
Const DateClm As String = "B"
Const ShiftClm As String = "C"
Dim Rng As Range
Dim Arr As Variant, Pos As Variant
Dim Rl As Long, Cl As Long
Dim R As Long, C As Long
Dim i As Long
With ActiveSheet
Cl = .UsedRange.Columns.Count - .UsedRange.Column + 1
Rl = .Cells(.Rows.Count, Columns(EmpidClm).Column).End(xlUp).Row
Set Rng = Range(.Cells(1, EmpidClm), .Cells(Rl, Cl))
End With
Arr = Rng.Value
ReDim Pos(1 To (UBound(Arr) * UBound(Arr, 2)), 1 To 3)
i = 1
For C = 1 To 3
Pos(i, C) = Array("Empid", "Date", "Shift")(C - 1)
Next C
For R = 2 To UBound(Arr)
For C = 2 To UBound(Arr, 2)
i = i + 1
Pos(i, 1) = Arr(R, 1)
Pos(i, 2) = Arr(1, C)
Pos(i, 3) = Arr(R, C)
Next C
Next R
R = Rl + 5 ' write 5 rows below existing data
Set Rng = ActiveSheet.Cells(R, EmpidClm).Resize(i, 3)
Rng.Value = Pos
End Sub
Звучит круто. Дайте нам знать, когда вы столкнетесь с конкретной проблемой. Мы здесь не для того, чтобы писать код для вас.