Требуется помощь. Excel и создание BMP файла

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Александр Малахов
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 20.07.2008 (Вс) 9:17

Требуется помощь. Excel и создание BMP файла

Сообщение Александр Малахов » 20.07.2008 (Вс) 9:21

У меня такая задача недавно срочно появилась. Имеется файл excel, где первая колонка это список координат строк пикселей по оси Х(0,4,8,12,16...), вторая колонка это список линий первого генерируемого BMP файла (размер 1024х768). если в ячейке стоит символ Х, то смотрится на левую ячейку первой колонки и определяется координата рисуемой линии (Picture1.Line (0, 0)-(0, 767)). Третья колонка это второй BMP файл. всего 13 BMP файлов.

В итоге должен получиться BMP файл, где на черном фоне 256 белых вертикальных линий толщиной в 1 пиксель размещенных в заданном порядке

Какой примерно код для считывания данных с excel? и какой тип цикла мне применить.

Буду очень благодарен за помощь :)

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Сообщение Proxy » 20.07.2008 (Вс) 10:17

Ух ты) А если не секрет откуда это всё? Это не из управления типографским каттером?
Follow the white rabbit.

Александр Малахов
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 20.07.2008 (Вс) 9:17

Сообщение Александр Малахов » 20.07.2008 (Вс) 12:01

Нет, это для 3d сканера, который мы самостоятельно собираем. Это сетка, которая проецируется на исследуемый объект

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Сообщение Proxy » 20.07.2008 (Вс) 13:33

Преформулируй пожалуйста вопрос. А так неоднозначности получаются. Тебе надо BMP с содержимым натип штрихкода, я так понял? все линии вертикальные? Можешь как-то графически штоль набросать взаимосвязь значения в ячейках таблицы и координат линий? А то так сложно представить.
Follow the white rabbit.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 21.07.2008 (Пн) 9:05

Какой примерно код для считывания данных с excel?

Александр Малахов попробуй это. Код не проверял...

Код: Выделить всё
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object
Dim A1_Cell_Value As String

Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Open("диск:\путь\файл.xls")
Set oSheet = oBook.Worksheets(1)
A1_Cell_Value = oSheet.Range("A1").Value2
oExcel.Quit


Естественно, в листе1, ячейке А1 должно быть какое-нибудь значение..
_________________

А так можно занести в массив значения ячеек A1:A10, немножко кривовато, буду рад, если кто подскажет, как избавиться от переменной i

Код: Выделить всё
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object
Dim Cell_Value(1 To 10) As Integer
Dim C As Object
Dim i As Integer

Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Open("диск:\путь\файл.xls")
Set oSheet = oBook.Worksheets(1)

i = 1
For Each C In oSheet.Range("A1:A10")
    Cell_Value(i) = C.Value
    i = i + 1
Next C

oExcel.Quit
Последний раз редактировалось Денис 22.07.2008 (Вт) 9:08, всего редактировалось 1 раз.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Александр Малахов
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 20.07.2008 (Вс) 9:17

Сообщение Александр Малахов » 21.07.2008 (Пн) 20:11

Proxy
Да, это получается что то вроде штрих-кода.
______________________________________________
|Пиксель по Х|I bmp файл|II bmp файл|III bmp файл|
----------------------------------------------------------------
| 0 | x | x | |
----------------------------------------------------------------
| 4 | x | | x |
----------------------------------------------------------------
| 8 | | x | |
----------------------------------------------------------------

И получается, что первая картинка будет выглядеть как 2 белые вертикальные линии шириной в один пиксель на черном фоне. Первая линия будет проходить через (0;0)-(0;767), вторая линия (4;0)-(4;767). так же и остальные линии и остальные графические файлы.

надеюсь, что объяснил:)

Александр Малахов
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 20.07.2008 (Вс) 9:17

Сообщение Александр Малахов » 21.07.2008 (Пн) 20:15

Proxy
Да, это получается что то вроде штрих-кода.
______________________________________________
|Пиксель по Х|I bmp файл|II bmp файл|III bmp файл|
----------------------------------------------------------------
|........0.........|..........x.........|.........x.........|...............|
----------------------------------------------------------------
|........4.........|..........x.........|....................|......x.......|
----------------------------------------------------------------
|........8.........|.....................|.........x.........|...............|
----------------------------------------------------------------

И получается, что первая картинка будет выглядеть как 2 белые вертикальные линии шириной в один пиксель на черном фоне. Первая линия будет проходить через (0;0)-(0;767), вторая линия (4;0)-(4;767). так же и остальные линии и остальные графические файлы.

надеюсь, что объяснил

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Сообщение Proxy » 21.07.2008 (Пн) 21:01

Денис вроде объяснил как это всё в массив занести. Как линии построить по координатам ты знаешь) Дык вперёд!

и какой тип цикла мне применить

Смотря где и для чего :)
Follow the white rabbit.

Александр Малахов
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 20.07.2008 (Вс) 9:17

Сообщение Александр Малахов » 24.07.2008 (Чт) 14:32

:!: Спасибо камрадам Proxy и Денису за помощь! ))
вот код который я получил в итоге:
Код: Выделить всё
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object
'Dim x As Integer
Dim xOK As Integer
Dim Cell_Value_A(1 To 256) As Integer
Dim Cell_Value_B(1 To 256) As Integer
Dim Cell_Value_C(1 To 256) As Integer
Dim Cell_Value_D(1 To 256) As Integer
Dim Cell_Value_E(1 To 256) As Integer
Dim Cell_Value_F(1 To 256) As Integer
Dim Cell_Value_G(1 To 256) As Integer
Dim Cell_Value_H(1 To 256) As Integer
Dim Cell_Value_I(1 To 256) As Integer
Dim Cell_Value_J(1 To 256) As Integer
Dim Cell_Value_K(1 To 256) As Integer
Dim Cell_Value_L(1 To 256) As Integer
Dim Cell_Value_M(1 To 256) As Integer
Dim Cell_Value_N(1 To 256) As Integer
Dim C_A As Object
Dim C_B As Object
Dim C_C As Object
Dim C_D As Object
Dim C_E As Object
Dim C_F As Object
Dim C_G As Object
Dim C_H As Object
Dim C_I As Object
Dim C_J As Object
Dim C_K As Object
Dim C_L As Object
Dim C_M As Object
Dim C_N As Object
Dim i_A As Integer
Dim i_B As Integer
Dim i_C As Integer
Dim i_D As Integer
Dim i_E As Integer
Dim i_F As Integer
Dim i_G As Integer
Dim i_H As Integer
Dim i_I As Integer
Dim i_J As Integer
Dim i_K As Integer
Dim i_L As Integer
Dim i_M As Integer
Dim i_N As Integer
Dim total As Long


Public Sub Form_Load()


Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Open("c:\книга1.xls")
Set oSheet = oBook.Worksheets(1)

i_A = 1
i_B = 1
i_C = 1
i_D = 1
i_E = 1
i_F = 1
i_G = 1
i_H = 1
i_I = 1
i_J = 1
i_K = 1
i_L = 1
i_M = 1
i_N = 1

For Each C_A In oSheet.Range("A1:A256")
    Cell_Value_A(i_A) = C_A.Value
    i_A = i_A + 1
Next C_A

For Each C_B In oSheet.Range("B1:B256")
    Cell_Value_B(i_B) = C_B.Value
    i_B = i_B + 1
Next C_B

For Each C_C In oSheet.Range("C1:C256")
    Cell_Value_C(i_C) = C_C.Value
    i_C = i_C + 1
Next C_C

For Each C_D In oSheet.Range("D1:D256")
    Cell_Value_D(i_D) = C_D.Value
    i_D = i_D + 1
Next C_D

For Each C_E In oSheet.Range("E1:E256")
    Cell_Value_E(i_E) = C_E.Value
    i_E = i_E + 1
Next C_E

For Each C_F In oSheet.Range("F1:F256")
    Cell_Value_F(i_F) = C_F.Value
    i_F = i_F + 1
Next C_F

For Each C_G In oSheet.Range("G1:G256")
    Cell_Value_G(i_G) = C_G.Value
    i_G = i_G + 1
Next C_G

For Each C_H In oSheet.Range("H1:H256")
    Cell_Value_H(i_H) = C_H.Value
    i_H = i_H + 1
Next C_H

For Each C_I In oSheet.Range("I1:I256")
    Cell_Value_I(i_I) = C_I.Value
    i_I = i_I + 1
Next C_I

For Each C_J In oSheet.Range("J1:J256")
    Cell_Value_J(i_J) = C_J.Value
    i_J = i_J + 1
Next C_J

For Each C_K In oSheet.Range("K1:K256")
    Cell_Value_K(i_K) = C_K.Value
    i_K = i_K + 1
Next C_K

For Each C_L In oSheet.Range("L1:L256")
    Cell_Value_L(i_L) = C_L.Value
    i_L = i_L + 1
Next C_L

For Each C_M In oSheet.Range("M1:M256")
    Cell_Value_M(i_M) = C_M.Value
    i_M = i_M + 1
Next C_M

For Each C_N In oSheet.Range("N1:N256")
    Cell_Value_N(i_N) = C_N.Value
    i_N = i_N + 1
Next C_N

Рисунок1.Picture = LoadPicture()
For xOK = 1 To UBound(Cell_Value_B)
If Cell_Value_B(xOK) = 1 Then Рисунок1.Line (Cell_Value_A(xOK), 0)-(Cell_Value_A(xOK), 767), RGB(255, 255, 255)
Next xOK
SavePicture Рисунок1.Image, "c:\1.bmp"

Рисунок1.Picture = LoadPicture()
For xOK = 1 To UBound(Cell_Value_C)
If Cell_Value_C(xOK) = 1 Then Рисунок1.Line (Cell_Value_A(xOK), 0)-(Cell_Value_A(xOK), 767), RGB(255, 255, 255)
Next xOK
SavePicture Рисунок1.Image, "c:\2.bmp"

Рисунок1.Picture = LoadPicture()
For xOK = 1 To UBound(Cell_Value_D)
If Cell_Value_D(xOK) = 1 Then Рисунок1.Line (Cell_Value_A(xOK), 0)-(Cell_Value_A(xOK), 767), RGB(255, 255, 255)
Next xOK
SavePicture Рисунок1.Image, "c:\3.bmp"

Рисунок1.Picture = LoadPicture()
For xOK = 1 To UBound(Cell_Value_E)
If Cell_Value_E(xOK) = 1 Then Рисунок1.Line (Cell_Value_A(xOK), 0)-(Cell_Value_A(xOK), 767), RGB(255, 255, 255)
Next xOK
SavePicture Рисунок1.Image, "c:\4.bmp"

Рисунок1.Picture = LoadPicture()
For xOK = 1 To UBound(Cell_Value_F)
If Cell_Value_F(xOK) = 1 Then Рисунок1.Line (Cell_Value_A(xOK), 0)-(Cell_Value_A(xOK), 767), RGB(255, 255, 255)
Next xOK
SavePicture Рисунок1.Image, "c:\5.bmp"

Рисунок1.Picture = LoadPicture()
For xOK = 1 To UBound(Cell_Value_G)
If Cell_Value_G(xOK) = 1 Then Рисунок1.Line (Cell_Value_A(xOK), 0)-(Cell_Value_A(xOK), 767), RGB(255, 255, 255)
Next xOK
SavePicture Рисунок1.Image, "c:\6.bmp"

Рисунок1.Picture = LoadPicture()
For xOK = 1 To UBound(Cell_Value_H)
If Cell_Value_H(xOK) = 1 Then Рисунок1.Line (Cell_Value_A(xOK), 0)-(Cell_Value_A(xOK), 767), RGB(255, 255, 255)
Next xOK
SavePicture Рисунок1.Image, "c:\7.bmp"

Рисунок1.Picture = LoadPicture()
For xOK = 1 To UBound(Cell_Value_I)
If Cell_Value_I(xOK) = 1 Then Рисунок1.Line (Cell_Value_A(xOK), 0)-(Cell_Value_A(xOK), 767), RGB(255, 255, 255)
Next xOK
SavePicture Рисунок1.Image, "c:\8.bmp"

Рисунок1.Picture = LoadPicture()
For xOK = 1 To UBound(Cell_Value_J)
If Cell_Value_J(xOK) = 1 Then Рисунок1.Line (Cell_Value_A(xOK), 0)-(Cell_Value_A(xOK), 767), RGB(255, 255, 255)
Next xOK
SavePicture Рисунок1.Image, "c:\9.bmp"

Рисунок1.Picture = LoadPicture()
For xOK = 1 To UBound(Cell_Value_K)
If Cell_Value_K(xOK) = 1 Then Рисунок1.Line (Cell_Value_A(xOK), 0)-(Cell_Value_A(xOK), 767), RGB(255, 255, 255)
Next xOK
SavePicture Рисунок1.Image, "c:\10.bmp"

Рисунок1.Picture = LoadPicture()
For xOK = 1 To UBound(Cell_Value_L)
If Cell_Value_L(xOK) = 1 Then Рисунок1.Line (Cell_Value_A(xOK), 0)-(Cell_Value_A(xOK), 767), RGB(255, 255, 255)
Next xOK
SavePicture Рисунок1.Image, "c:\11.bmp"

Рисунок1.Picture = LoadPicture()
For xOK = 1 To UBound(Cell_Value_M)
If Cell_Value_M(xOK) = 1 Then Рисунок1.Line (Cell_Value_A(xOK), 0)-(Cell_Value_A(xOK), 767), RGB(255, 255, 255)
Next xOK
SavePicture Рисунок1.Image, "c:\12.bmp"

Рисунок1.Picture = LoadPicture()
For xOK = 1 To UBound(Cell_Value_N)
If Cell_Value_N(xOK) = 1 Then Рисунок1.Line (Cell_Value_A(xOK), 0)-(Cell_Value_A(xOK), 767), RGB(255, 255, 255)
Next xOK
SavePicture Рисунок1.Image, "c:\13.bmp"


oExcel.Quit


End Sub


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 53

    TopList