Установка адреса диапазона и имени листа
Дата последнего изменения: 24 марта 2010 г.
Применимо к: SharePoint Server 2010
В этом примере показан порядок установки адресов диапазона с использованием координат диапазона, именованных диапазонов, строк и столбцов. Также описывается порядок установки имени листа и взаимоотношения между именем листа и адресом диапазона.
Координаты диапазона — это четыре целочисленные координаты, определяющие непрерывный диапазон. С помощью этих координат можно задавать диапазоны в приложении Excel с использованием прямой целочисленной индексации в качестве альтернативы выражениям "A1". Задаваемые координаты определяют верхнюю строку, левый столбец, а также высоту и ширину диапазона. Координаты диапазона рекомендуется использовать в коде, в котором выполняется итерация по набору ячеек в цикле, а также в тех случаях, когда координаты диапазона вычисляются динамически в рамках алгоритма.
Спецификация диапазона должна содержать имя листа. В веб-службах Excel не распознается текущий лист. Задать имя листа можно несколькими способами:
В рамках адреса диапазона, например, "Sheet3!B12:D18", где аргумент, определяющий имя листа, может быть пустым:
object[] rangeResult1 = xlservice.GetRangeA1(sessionId, String.Empty, "Sheet2!A12:G18", true, out outStatus);
Dim rangeResult1() As Object = xlservice.GetRangeA1(sessionId, String.Empty, "Sheet2!A12:G18", True, outStatus)
С помощью отдельного аргумента имени листа, где аргумент адреса диапазона может не включать имя листа:
xlservice.SetCell(sessionId, "Sheet3", 0, 11, 1000);
xlservice.SetCell(sessionId, "Sheet3", 0, 11, 1000)
С помощью имени листа и адреса диапазона, где оба задаваемых имени листа должны совпадать:
object[] rangeResult = xlservice.GetCellA1(sessionId, "Sheet3", "Sheet3!G18", true, out outStatus);
Dim rangeResult() As Object = xlservice.GetCellA1(sessionId, "Sheet3", "Sheet3!G18", True, outStatus)
Имя листа может не использоваться только при работе с именованными диапазонами, поскольку область действия некоторых именованных диапазонов распространяется на всю рабочую книгу. Например, можно ссылаться на именованные диапазоны, не указывая аргумент имени листа:
xlServices.SetCellA1(sessionId, String.Empty, "MyNamedRange", 8);
xlServices.SetCellA1(sessionId, String.Empty, "MyNamedRange", 8)
Если имя листа указано, диапазоны, ссылки на которые используются, должны существовать в заданном листе. Если указано имя несуществующего листа, вызов завершается сбоем, и возникает исключение протокола SOAP, свидетельствующее об отсутствии нужного листа.
Пример
Примечание |
---|
В этом примере предполагается, что библиотека документов SharePoint уже создана и помещена в надежное расположение. Дополнительные сведения см. в статьях Инструкции по определению надежного расположения и How to: Trust Workbook Locations Using Script. |
using System;
using System.Text;
using System.Web.Services.Protocols;
using ExcelWebService.myserver02;
namespace ExcelWebService
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class MyExcelWebService
{
[STAThread]
static void Main(string[] args)
{
// Instantiate the Web service
// and range coordinate array object.
ExcelService xlservice = new ExcelService();
Status[] outStatus;
RangeCoordinates rangeCoordinates = new RangeCoordinates();
string sheetName = "MySheet1";
// TODO: Change the path to the workbook
// to point to a workbook you have access to.
// The workbook must be in a trusted location.
// Using the workbook path this way will allow
// you to call the workbook remotely.
string targetWorkbookPath =
"http://myserver02/example/Shared%20Documents/MyWorkbook1.xlsx";
// Set Credentials for requests
xlservice.Credentials =
System.Net.CredentialCache.DefaultCredentials;
try
{
// Call the open workbook, and point to
// the workbook to open.
string sessionId =
xlservice.OpenWorkbook(targetWorkbookPath,
String.Empty, String.Empty, out outStatus);
// Prepare object to define range coordinates
// and call the GetRange method.
// startCol, startRow, startHeight, and startWidth
// get their values from user input.
rangeCoordinates.Column = (int)startCol.Value;
rangeCoordinates.Row = (int)startRow.Value;
rangeCoordinates.Height = (int)startHeight.Value;
rangeCoordinates.Width = (int)startWidth.Value;
object[] rangeResult1 = xlservice.GetRange(sessionId,
sheetName, rangeCoordinates, false, out outStatus);
Console.WriteLine("Total rows in range: " +
rangeResult1.Length);
Console.WriteLine("Sum in last column is: " +
((object[])rangeResult1[18])[11]);
// Call the SetCell method, which invokes
// the Calculate method.
// Set first row in last column cell to 1000.
xlservice.SetCell(sessionId, sheetName, 0, 11, 1000);
// Call the GetRange method again to see if
// the Sum total in the last column changed.
object[] rangeResult2 = xlservice.GetRange(sessionId,
sheetName, rangeCoordinates, false, out outStatus);
Console.WriteLine("Sum in the last column after SetCell
is: " + ((object[])rangeResult2[18])[11]);
// Close workbook. This also closes the session.
xlservice.CloseWorkbook(sessionId);
}
catch (SoapException e)
{
Console.WriteLine("Exception Message: {0}", e.Message);
}
catch (Exception e)
{
Console.WriteLine("Exception Message: {0}", e.Message);
}
Console.ReadLine();
}
}
}
Imports System
Imports System.Text
Imports System.Web.Services.Protocols
Imports ExcelWebService.myserver02
Namespace ExcelWebService
''' <summary>
''' Summary description for Class1.
''' </summary>
Friend Class MyExcelWebService
<STAThread> _
Shared Sub Main(ByVal args() As String)
' Instantiate the Web service
' and range coordinate array object.
Dim xlservice As New ExcelService()
Dim outStatus() As Status
Dim rangeCoordinates As New RangeCoordinates()
Dim sheetName As String = "MySheet1"
' TODO: Change the path to the workbook
' to point to a workbook you have access to.
' The workbook must be in a trusted location.
' Using the workbook path this way will allow
' you to call the workbook remotely.
Dim targetWorkbookPath As String = "http://myserver02/example/Shared%20Documents/MyWorkbook1.xlsx"
' Set Credentials for requests
xlservice.Credentials = System.Net.CredentialCache.DefaultCredentials
Try
' Call the open workbook, and point to
' the workbook to open.
Dim sessionId As String = xlservice.OpenWorkbook(targetWorkbookPath, String.Empty, String.Empty, outStatus)
' Prepare object to define range coordinates
' and call the GetRange method.
' startCol, startRow, startHeight, and startWidth
' get their values from user input.
rangeCoordinates.Column = CInt(Fix(startCol.Value))
rangeCoordinates.Row = CInt(Fix(startRow.Value))
rangeCoordinates.Height = CInt(Fix(startHeight.Value))
rangeCoordinates.Width = CInt(Fix(startWidth.Value))
Dim rangeResult1() As Object = xlservice.GetRange(sessionId, sheetName, rangeCoordinates, False, outStatus)
Console.WriteLine("Total rows in range: " & rangeResult1.Length)
Console.WriteLine("Sum in last column is: " & (CType(rangeResult1(18), Object()))(11))
' Call the SetCell method, which invokes
' the Calculate method.
' Set first row in last column cell to 1000.
xlservice.SetCell(sessionId, sheetName, 0, 11, 1000)
' Call the GetRange method again to see if
' the Sum total in the last column changed.
Dim rangeResult2() As Object = xlservice.GetRange(sessionId, sheetName, rangeCoordinates, False, outStatus)
Console.WriteLine("Sum in the last column after SetCell is: " & (CType(rangeResult2(18), Object()))(11))
' Close workbook. This also closes the session.
xlservice.CloseWorkbook(sessionId)
Catch e As SoapException
Console.WriteLine("Exception Message: {0}", e.Message)
Catch e As Exception
Console.WriteLine("Exception Message: {0}", e.Message)
End Try
Console.ReadLine()
End Sub
End Class
End Namespace
Надежное программирование
Убедитесь, что добавлена веб-ссылка на доступный сайт веб-служб Excel. Измените следующие элементы:
Измените выражение using ExcelWebService.myserver02; таким образом, чтобы оно указывало на соответствующий сайт веб-службы.
Измените параметр string targetWorkbookPath = "http://myserver02/example/Shared%20Documents/Book1.xlsx"; таким образом, чтобы он указывал на доступную рабочую книгу, которая должна находиться в надежном расположении.
См. также
Задачи
Практическое руководство. Получение значений из диапазонов
Практическое руководство. Задание значений для диапазонов
Пошаговое руководство. Разработка настраиваемого приложения с помощью веб-служб Excel