如何开始使用OpenStack命令行和API

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何开始使用OpenStack命令行和API相关的知识,希望对你有一定的参考价值。

参考技术A 首先你可以学习部署OpenStack,使用DevStack或者手动安装OpenStack。

之后就可以开始使用OpenStack的命令行管理OpenStack,以及调用API。

细节的这里就不展开来说了,有官方的英文文档可以参考。

命令行相关:http://docs.openstack.org/admin-guide/cli.html
API相关:http://developer.openstack.org/api-guide/quick-start/

如果自己搞不定的话,可以看看基金会的Certified OpenStack Administrator的培训,可以学到这些内容。

如何使用 VBSCript 在 Excel 中查找合并单元格的开始行和结束行?

【中文标题】如何使用 VBSCript 在 Excel 中查找合并单元格的开始行和结束行?【英文标题】:How do I find start and end rows of merged cells in Excel with VBSCript? 【发布时间】:2010-10-15 06:38:06 【问题描述】:

通过 VBS 脚本,我必须使用格式如下的 Excel 书:

    |     A     |     B     |     C     |
----|-----------|-----------|-----------|
  1 |  Header1  |  Header2  |  Header3  |
----|-----------|-----------|-----------|
  2 |  FOLDER1  |           |           |
----|-----------|-----------|-----------|
  3 |   Item1   |    111    |    222    |
----|           |-----------|-----------|
  4 |           | Item1Info | Item1Data |
----|           |-----------|-----------|
 .. |           |    ...    |    ...    |
----|           |-----------|-----------|
 11 |           |    333    |    444    |
----|-----------|-----------|-----------|
 12 |   Item2   |    555    |    666    |
----|-----------|-----------|-----------|
 13 |  FOLDER2  |           |           |
----|-----------|-----------|-----------|
 14 |   Item1   |    777    |    888    |
----|-----------|-----------|-----------|
 .. |    ...    |    ...    |    ...    |

所以:A 列有 1 级和 2 级类别(文件夹/项目),B 列和 C 列保存项目的数据。这里的问题是一个项目可以跨越多行,如图所示; Item1 是第 3 行到第 11 行的合并单元格)。

我需要根据这些数据创建一个 .csv,如下所示:

Header1,Header2,Header3
111,Item1,FOLDER1
Item1Info,Item1,FOLDER1
...
555,Item2,FOLDER1
777,Item1,FOLDER2
...

C列的数据可以丢弃。

基本上,我需要知道的是如何检测一个单元格是否被合并(即每个项目不止一行信息)有多少行合并在一起。有什么想法吗?

【问题讨论】:

【参考方案1】:

你可以使用:

if (Cell.MergeCells) Then ...

确定一个单元格是否是合并范围的一部分,并且

Cell.MergeArea.Cells(1,1).value

访问该合并范围中包含的值。

这里有一些示例代码可以帮助您入门。我省略了实际编写 CSV 文件的细节:

Public Sub MakeCSV()
    Dim rowIndex As Integer
    Dim itemColumn As Range
    Dim dataColumn As Range
    Dim itemCell As Range
    Dim FolderName As String
    Dim ItemName As String
    Dim CSVLine As String

    Set itemColumn = Range("A2:A100")
    Set dataColumn = Range("B2:B100")

    For rowIndex = 1 To dataColumn.Rows.Count
        If dataColumn.Cells(rowIndex, 1).value = "" Then
            Rem // determine the current folder name
            FolderName = itemColumn.Cells(rowIndex, 1).value
        Else
            Rem // determine the item name (accounting for merged cells)
            Set itemCell = itemColumn.Cells(rowIndex, 1)
            If itemCell.MergeCells Then
                ItemName = itemCell.MergeArea.Cells(1, 1).value
            Else
                ItemName = itemCell.value
            End If

            Rem // write a line to the CSV file
            CSVLine = dataColumn.Cells(rowIndex, 1).value
            CSVLine = CSVLine & "," & ItemName
            CSVLine = CSVLine & "," & FolderName
        End If
    Next rowIndex
End Sub

【讨论】:

【参考方案2】:

感谢您的回复。 eJames 我想你已经回答了我想知道的一切,如何检测合并的单元格以及 FolderName / ItemName 分配。 再次感谢。

我可以毫无问题地编写 CSV,仔细检查后我注意到 FOLDERn 单元格也合并了列 (A-C),所以我可能也可以使用 Mister Lucky 代码检查:

mergedColumns = cellRange.MergeArea.Columns.Count

如果 mergeColumns > 1 则为文件夹名称。

【讨论】:

【参考方案3】:

测试合并的单元格是否覆盖多于一行:

cellRange = ExcelApplication.Cells(rowIndex, columnIndex)    
mergedColumns = cellRange.MergeArea.Rows.Count
if mergedColumns > 1 then ' merged

【讨论】:

以上是关于如何开始使用OpenStack命令行和API的主要内容,如果未能解决你的问题,请参考以下文章

如何开始使用OpenStack命令行和API

如何开始使用OpenStack命令行和API-openstack学习

openstacknova(控制节点/计算节点)

OpenStack 通用设计思路 - 每天5分钟玩转 OpenStack(25)

OpenStack 通用设计思路 - 每天5分钟玩转 OpenStack(25)

如何从零开始学习OpenStack