Вверх ↑
Этот топик читают: Гость
Ответов: 3
Рейтинг: 0
#1: 2020-09-14 16:59:28 ЛС | профиль | цитата
Нужно получить имена листов из ExCel. Пе нашёл такого компонента. Подскажите пожалуйста есть-ли? Ну или альтернативный способ... Заранее благодарен.
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 263
Рейтинг: 18
#2: 2020-09-14 18:16:28 ЛС | профиль | цитата
Нет такого компонента, но получить имена листов можно.

схема от Леонида

Add(MainForm,9161318,602,301)
{
Width=622
Height=186
Caption="In_Out_Excel"
Point(onClose)
link(onClose,604810:doCompare,[])
}
Add(LED,1408573,651,252)
{
Left=85
Top=5
}
Add(IndexToChanel,4742625,602,259)
{
link(onEvent1,1408573:doOff,[])
link(onEvent2,1408573:doOn,[])
}
Add(Button,11796961,392,112)
{
Left=5
Top=10
Width=65
Caption="Open Excel"
link(onClick,420540:doExecute,[])
}
Add(Button,12390211,483,231)
{
Left=10
Top=40
Caption="Close"
link(onClick,13900935:doWork2,[])
}
Add(Hub,9982022,490,112)
{
link(onEvent1,10946710:doClear,[(594,118)(594,139)])
link(onEvent2,10692435:doOpen,[(515,125)(515,202)])
}
Add(ODialog,420540,441,112)
{
Filter="Excel(.xls,.xlsx)|*.xls;*.xlsx"
link(onExecute,9982022:doEvent1,[])
}
Add(ComboBox,10946710,602,126)
{
Left=120
Top=10
Width=140
Height=21
Text="Выбрать лист"
DataType=1
Point(doSelect)
link(onClick,10692435:doSheet,[(641,139)(641,188)(522,188)(522,223)])
}
Add(If_else,11782534,546,126)
{
Type=5
Op2=Integer(0)
link(onTrue,10946710:doAdd,[])
link(onFalse,10946710:doSelect,[(590,139)(590,160)])
}
Add(Button,14425351,294,294)
{
Left=10
Top=80
Caption="Read"
link(onClick,469012:doString,[])
}
Add(Edit,5305046,308,245)
{
Left=75
Top=80
Text="2"
DataType=2
}
Add(Label,4501845,308,112)
{
Left=90
Top=60
Caption="Row"
}
Add(Label,613563,350,112)
{
Left=135
Top=60
Width=39
Height=17
Caption="Column"
}
Add(Edit,16579324,350,245)
{
Left=130
Top=80
Text="1"
DataType=2
}
Add(FormatStr,469012,343,294)
{
Mask="%1;%2"
link(onFString,10692435:doRead,[(459,300)(459,216)])
link(Str1,5305046:Text,[(349,285)(314,285)])
link(Str2,16579324:Text,[])
}
Add(Button,8636081,294,203)
{
Left=10
Top=110
Font=[MS Sans Serif,8,0,255,1]
Caption="Write"
link(onClick,1368601:doString,[])
}
Add(Edit,663925,308,154)
{
Left=75
Top=110
Text="2"
DataType=2
}
Add(Edit,10420173,350,154)
{
Left=130
Top=110
Text="1"
DataType=2
}
Add(FormatStr,1368601,343,203)
{
DataCount=3
Mask="%1;%2;%3"
link(onFString,10692435:doWrite,[])
link(Str1,663925:Text,[(349,198)(314,198)])
link(Str2,10420173:Text,[])
link(Str3,1032761:Text,[(363,195)(405,195)])
}
Add(VBJScript,10692435,546,196)
{
@Hint=#16:Query SQL Server|
WorkPoints=#6:doOpen|7:doWrite|6:doRead|7:doSheet|7:doMacro|7:doClose|
EventPoints=#6:onShet|7:onMacro|7:onCells|6:onOpen|
Script=#9:Dim strIn|10:Dim strOut|10:Dim NumRow|10:Dim NumCol|5:Dim i|5:Dim j|12:Dim objExcel|0:|22:Sub doWork(Data,Index)|18: Select Case Index|103: Case "doOpen" 'На вход подаётся строка, содержащая полный путь к файлу|52: Set objExcel = CreateObject("Excel.Application")|52: Set objWorkbook = objExcel.Workbooks.Open (Data)|82: For i=1 To objWorkbook.Sheets.Count 'Листы начинаются не с "0", а с "1"|67: sys.onShet objWorkbook.Sheets(i).Name 'Выводим имя наружу |9: Next|74: 'j=objWorkbook.macro.Count 'Узнаём количество макросов|88: ' For i=1 To j 'Нумерация начинаются не с "0", а с "1" |79: ' strIn = objWorkbook.macro(i).Name 'Узнаём имя очередного макроса |67: ' sys.onMacro strIn 'Выводим имя наружу |15: ' Next |18: sys.onShet 0 |16: sys.onOpen 1|143: Case "doRead" 'На вход подаётся строка, содержащая (разделитель -- точка с запятой): НомерСтроки;НомерКолонки;|22: strIn = CStr(Data)|28: i = InStr(1,strIn,";",0)|37: NumRow = CLng(Mid(strIn, 1, i-1))|33: NumCol = CLng(Mid(strIn,i+1))|61: strOut = objExcel.ActiveSheet.Cells(NumRow, NumCol).Value|27: sys.onCells strOut |163: Case "doWrite" 'На вход подаётся строка, содержащая (разделитель -- точка с запятой): НомерСтроки;НомерКолонки;ЗаписываемоеЗначение|22: strIn = CStr(Data)|28: i = InStr(1,strIn,";",0)|37: NumRow = CLng(Mid(strIn, 1, i-1))|30: j = InStr(i+1,strIn,";",0)|41: NumCol = CLng(Mid(strIn, i+1, j-i-1))|28: strIn = Mid(strIn, j+1)|58: objExcel.ActiveSheet.Cells(NumRow, NumCol).Value=strIn|21: sys.onCells strIn|93: Case "doSheet" 'На вход подаётся строка, содержащая имя Листа|32: objExcel.Sheets(Data).Select|44: objExcel.ActiveSheet.Cells(1, 1).Select |95: Case "doMacro" 'На вход подаётся строка, содержащая имя Макроса|63: objExcel.Application.Run (Data) |19: 'sys.onMacro 1 |17: Case "doClose"|17: objExcel.Quit|26: Set objExcel = Nothing|20: sys.onOpen 0 |11: End Select|0:|7:End Sub|
UseName=0
link(onShet,11782534:doCompare,[(585,202)(585,181)(536,181)(536,132)])
link(onCells,3080051:doText,[])
link(onOpen,4742625:doEvent,[(590,223)(590,265)])
}
Add(If_else,604810,651,322)
{
Op2=Integer(1)
link(onTrue,13900935:doWork3,[(693,328)(693,364)(536,364)])
link(Op1,1408573:Value,[])
}
Add(HubEx,13900935,532,231)
{
link(onEvent,10692435:doClose,[])
}
Add(Edit,3080051,602,210)
{
Left=190
Top=80
Width=175
}
Add(Memo,1032761,399,154)
{
Left=380
Top=25
Width=215
Height=115
ScrollBars=2
}
Add(Label,836167,308,70)
{
Left=385
Top=5
Width=94
Height=17
Caption="Текст для записи"
}


Редактировалось 1 раз(а), последний 2020-09-14 18:17:22
карма: 3

0
2
Сообщение
...
Прикрепленные файлы
(файлы не залиты)