WorkbookBase.XmlImportXml(String, XmlMap, Object, Object) Метод

Определение

Выполняет импорт потока XML-данных, предварительно загруженных в память.

public Microsoft.Office.Interop.Excel.XlXmlImportResult XmlImportXml (string data, out Microsoft.Office.Interop.Excel.XmlMap importMap, object overwrite, object destination);
member this.XmlImportXml : string * XmlMap * obj * obj -> Microsoft.Office.Interop.Excel.XlXmlImportResult
Public Function XmlImportXml (data As String, ByRef importMap As XmlMap, Optional overwrite As Object, Optional destination As Object) As XlXmlImportResult

Параметры

data
String

Импортируемые данные.

importMap
XmlMap

Проекция схемы, применяемая при импорте файла.

overwrite
Object

Если для параметра не указано Destination значение, то этот параметр указывает, следует ли перезаписывать данные, сопоставленные с картой схемы, указанной в параметре ImportMap . Значение true для перезаписи данных, значение false для добавления новых данных к существующим. Значение по умолчанию — true. Если для Destination параметра указано значение, то этот параметр указывает, следует ли перезаписывать существующие данные. Значение true для перезаписи существующих данных, значение false для отмены импорта, если данные подлежат замене. Значение по умолчанию — true.

destination
Object

Данные импортируются в новый XML-список в указанном диапазоне Range.

Возвращаемое значение

Одно из значений перечисления XlXmlImportResult.

Примеры

В следующем примере кода показано, как импортировать XML-данные в книгу. В этом примере создается DataSet объект с именами клиентов и добавляется XmlMap на основе схемы XML для в DataSet коллекцию XmlMaps текущей книги. Затем в примере вызывается XmlImportXml метод для импорта данных на лист Sheet1. При вызове XmlImportXmlBeforeXmlImport метода обработчик событий предлагает пользователю продолжить или отменить импорт XML, а AfterXmlImport обработчик событий сообщает, был ли успешно импортирован XML.

Этот пример предназначен для настройки на уровне документа.

private void WorkbookXmlImportEvents()
{
    this.BeforeXmlImport +=
        new Excel.WorkbookEvents_BeforeXmlImportEventHandler(
        ThisWorkbook_BeforeXmlImport);

    this.AfterXmlImport += new
        Excel.WorkbookEvents_AfterXmlImportEventHandler(
        ThisWorkbook_AfterXmlImport);

    // Create a new DataTable.
    DataSet ds = new DataSet();
    DataTable dt = ds.Tables.Add("Customers");
    dt.Columns.Add(new DataColumn("LastName"));
    dt.Columns.Add(new DataColumn("FirstName"));

    // Add a new row to the DataTable.
    DataRow dr = dt.NewRow();
    dr["LastName"] = "Chan";
    dr["FirstName"] = "Gareth";
    dt.Rows.Add(dr);

    // Add a new XML map to the collection.
    Excel.XmlMap xmlMap1 = this.XmlMaps.Add(ds.GetXmlSchema(),
        "NewDataSet");

    // Import the data stream if the XmlMap was successfully created.
    if (xmlMap1 != null)
    {
        // This will raise the BeforeXmlImport and AfterXmlImport events.
        Excel.Range range1 = Globals.Sheet1.Range["A1"];
        this.XmlImportXml(ds.GetXml(), out xmlMap1, true,
            range1);
    }
    else
    {
        MessageBox.Show("The XmlMap could not be created");
    }
}

void ThisWorkbook_BeforeXmlImport(Excel.XmlMap Map,
    string Url, bool IsRefresh, ref bool Cancel)
{
    if (DialogResult.No == MessageBox.Show("Microsoft Excel is about" +
        " to import XML into the workbook. Continue with importing?",
        "Custom XML Import Dialog", MessageBoxButtons.YesNo))
    {
        Cancel = true;
    }
}

void ThisWorkbook_AfterXmlImport(Excel.XmlMap Map, bool IsRefresh,
    Excel.XlXmlImportResult Result)
{
    if (Result == Excel.XlXmlImportResult.xlXmlImportSuccess)
    {
        MessageBox.Show("XML import succeeded.");
    }
    else
    {
        MessageBox.Show("XML import failed.");
    }
}
Private Sub WorkbookXmlImportEvents()

    ' Create a new DataTable.
    Dim ds As New DataSet()
    Dim dt As DataTable = ds.Tables.Add("Customers")
    dt.Columns.Add(New DataColumn("LastName"))
    dt.Columns.Add(New DataColumn("FirstName"))

    ' Add a new row to the DataTable.
    Dim dr As DataRow = dt.NewRow()
    dr("LastName") = "Chan"
    dr("FirstName") = "Gareth"
    dt.Rows.Add(dr)

    ' Add a new XML map to the collection.
    Dim xmlMap1 As Excel.XmlMap = Me.XmlMaps.Add(ds.GetXmlSchema(), _
        "NewDataSet")

    ' Import the data stream if the XmlMap was successfully created.
    If Not (xmlMap1 Is Nothing) Then

        ' This will raise the BeforeXmlImport and AfterXmlImport events.
        Dim range1 As Excel.Range = Globals.Sheet1.Range("A1")
        Me.XmlImportXml(ds.GetXml(), xmlMap1, True, _
            range1)
    Else
        MsgBox("The XmlMap could not be created")
    End If
End Sub

Sub ThisWorkbook_BeforeXmlImport(ByVal Map As Excel.XmlMap, _
    ByVal Url As String, ByVal IsRefresh As Boolean, _
    ByRef Cancel As Boolean) Handles Me.BeforeXmlImport

    If DialogResult.No = MessageBox.Show("Microsoft Excel is about" & _
        " to import XML into the workbook. Continue with importing?", _
        "Custom XML Import Dialog", MessageBoxButtons.YesNo) Then
        Cancel = True
    End If
End Sub

Sub ThisWorkbook_AfterXmlImport(ByVal Map As Excel.XmlMap, _
    ByVal IsRefresh As Boolean, ByVal Result As Excel.XlXmlImportResult) _
    Handles Me.AfterXmlImport

    If Result = Excel.XlXmlImportResult.xlXmlImportSuccess Then
        MsgBox("XML import succeeded.")
    Else
        MsgBox("XML import failed.")
    End If
End Sub

Комментарии

Не указывайте значение параметра, Destination если вы хотите импортировать данные в существующее сопоставление.

Следующие условия приводят к возникновению ошибок во время выполнения в этом методе:

  • Указанные XML-данные содержат синтаксические ошибки.

  • Процесс импорта был отменен, так как указанные данные не могут поместиться на лист.

Используйте метод для XmlImport импорта XML-файла данных в текущую книгу.

Необязательные параметры

Сведения о необязательных параметрах см. в разделе Необязательные параметры в решениях Office.

Применяется к