Поделиться через


Workbook.XmlImportXml Метод (2007 System)

Обновлен: Ноябрь 2007

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

Пространство имен:  Microsoft.Office.Tools.Excel
Сборка:  Microsoft.Office.Tools.Excel.v9.0 (в Microsoft.Office.Tools.Excel.v9.0.dll)

Синтаксис

'Декларация
Public Function XmlImportXml ( _
    Data As String, _
    <OutAttribute> ByRef ImportMap As XmlMap, _
    Overwrite As Object, _
    Destination As Object _
) As XlXmlImportResult
'Применение
Dim instance As Workbook
Dim Data As String
Dim ImportMap As XmlMap
Dim Overwrite As Object
Dim Destination As Object
Dim returnValue As XlXmlImportResult

returnValue = instance.XmlImportXml(Data, _
    ImportMap, Overwrite, Destination)
public XlXmlImportResult XmlImportXml(
    string Data,
    out XmlMap ImportMap,
    Object Overwrite,
    Object Destination
)

Параметры

  • Data
    Тип: System.String
    Импортируемые данные.
  • Overwrite
    Тип: System.Object
    Если для параметра Destination не указано значение, то этот параметр указывает, выполняется ли замена данных, которые были сопоставлены проекции схемы, заданной параметром ImportMap. Значение true для перезаписи данных, значение false для добавления новых данных к существующим. Значение по умолчанию — true. Если для параметра Destination задано значение, то этот параметр указывает, выполняется ли замена существующих данных. Значение true для перезаписи существующих данных, значение false для отмены импорта, если данные подлежат замене. Значение по умолчанию — true.
  • Destination
    Тип: System.Object
    Данные импортируются в новый XML-список в указанном диапазоне Range.

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

Тип: Microsoft.Office.Interop.Excel.XlXmlImportResult
Одно из значений XlXmlImportResult.

Заметки

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

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

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

  • импорт был отменен в связи с тем, что указанные данные не помещаются на листе.

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

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

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

Примеры

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

В этом примере демонстрируется настройка уровня документа.

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
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", missing];
        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.");
    }
}

Разрешения

См. также

Ссылки

Workbook Класс

Workbook - члены

Microsoft.Office.Tools.Excel - пространство имен