Запись данных в книге Excel
REST API для Excel в Microsoft Graph обеспечивает простой независимый от платформ способ отправки информации в книгу Excel.
В этой статье рассказывается, как записать простые наборы данных в книгу Excel в трех платформах веб-разработки: ASP.NET, Angular и React. Примеры кода, о которых рассказывается в этой статье, см. на веб-странице примеров по работе с Excel и Microsoft Graph для начинающих на веб-сайте GitHub.
Примечание.
Во всех трех примерах показано, как записывать данные в книгу Excel с именем demo.xlsx. Вы можете отправить книгу из этих примеров в свой OneDrive. Кроме того, для отправки файлов в OneDrive можно использовать Microsoft Graph. Если вы хотите изучить вызовы REST, вам потребуется отправить файл любого типа в корневую папку вашего OneDrive. См. пример списка задач ASP.NET для REST API Microsoft Graph.
Все три примера работы с Excel для начинающих делают одно и то же: получают имя и адрес пользователя, вошедшего в систему, и добавляют эти сведения в новую строку в книге demo.xlsx. Вы можете изменить примеры так, чтобы код добавлял дополнительные строки путем простого добавления информации в двумерный массив, представляющий строку или строки, которые вы хотите добавить.
Добавление одной или нескольких строк в книгу Excel с помощью одного запроса REST
При использовании REST API для Excel от вас требуется отправить простой запрос POST в конечную точку REST, которая представляет коллекцию строк книги Excel. Если вы работаете с записной книжкой в корневой папке учетной записи OneDrive пользователя, вошедшего в систему, конечная точка REST будет выглядеть указанным ниже образом.
https://graph.microsoft.com/v1.0/me/drive/root:/demo.xlsx:/workbook/tables/Table1/rows/add
Дополнительные сведения о том, как получить доступ к файлам в папках OneDrive, см. в разделе Тип ресурса DriveItem в нашей справочной документации.
Примечание.
Вы можете просмотреть существующую коллекцию строк книги, отправив запрос GET по части пути, который заканчивается на /rows
.
Текст запроса POST выглядит указанным ниже образом.
{
"index": null,
"values": [
["alex darrow", "adarrow@contoso.com"]
]
}
Значение первого параметра index
указывает относительное положение строки, которую вы добавляете в массив строк, нумерация элементов которого начинается с нуля. Строки, расположенные ниже вставляемой строки, будут сдвинуты вниз. Параметр null
указывает, что новая строка будет добавлена в конец.
Значение второго параметра values
представляет собой двумерный строковый массив, содержащий неформатированные значения всех строк, которые вы хотите добавить. Массив, приведенный в примере, содержит только одну строку, но вы можете добавить дополнительные строки. Для этого добавьте дополнительные строковые массивы.
Вы можете протестировать этот запрос в своей учетной записи OneDrive, отправив файл demo.xlsx в корневую папку OneDrive и выполнив этот запрос в песочнице Microsoft Graph.
Это все, что вам нужно знать, чтобы записывать данные в книгу Excel. Вам необходимо знать, как создавать запрос в используемой вами платформе, и в примерах по работе с Excel для начинающих продемонстрированы три способа решения этой задачи.
Добавление одной или нескольких строк в книгу Excel в ASP.NET
Код ASP.NET для создания и отправки запросов см. в файлах GraphResources.cs и GraphService.cs в примере по работе с Excel в Microsoft Graph для ASP.NET 4.6 для начинающих.
В файле GraphResources.cs
есть вспомогательный класс для инкапсуляции пользовательских данных, которые вы получаете из Microsoft Graph, и тело запроса, которое вы будете использовать для записи данных в книгу.
public class UserInfo
{
public string Name { get; set; }
public string Address { get; set; }
}
public class UserInfoRequest
{
public string index { get; set; }
public string[][] values { get; set; }
}
Класс GraphService.cs
содержит метод AddInfoToExcel
, который заполняет эти классы, сериализует информацию в запросе в объект JSON, а затем передает этот объект в качестве тела запроса POST.
public async Task<string> AddInfoToExcel(string accessToken, string name, string address)
{
string endpoint = "https://graph.microsoft.com/v1.0/me/drive/root:/demo.xlsx:/workbook/tables/Table1/rows/add";
using (var client = new HttpClient())
{
using (var request = new HttpRequestMessage(HttpMethod.Post, endpoint))
{
// Populate UserInfoRequest object
string[] userInfo = { name, address };
string[][] userInfoArray = { userInfo };
UserInfoRequest userInfoRequest = new UserInfoRequest();
userInfoRequest.index = null;
userInfoRequest.values = userInfoArray;
// Serialize the information in the UserInfoRequest object
string jsonBody = JsonConvert.SerializeObject(userInfoRequest);
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
request.Content = new StringContent(jsonBody, Encoding.UTF8, "application/json");
using (var response = await client.SendAsync(request))
{
if (response.IsSuccessStatusCode)
{
return Resource.Graph_UploadToExcel_Success_Result;
}
return response.ReasonPhrase;
}
}
}
}
Добавление одной или нескольких строк в книгу Excel в Angular
Код Angular для создания и отправки запросов см. в файле home.service.ts в примере по работе с Excel в Microsoft Graph для Angular для начинающих.
Так как в этом примере применяется TypeScript, в нем используется клиентская библиотека JavaScript для Microsoft Graph и типы TypeScript для Microsoft Graph.
Функция addInfoToExcel
в файле home.service.ts
создает двумерный строковый массив и тело запроса, содержащее массив. Затем с помощью клиентской библиотеки JavaScript для Microsoft Graph она создает и отправляет запрос. Ответ возвращается в виде обещания.
addInfoToExcel(user: MicrosoftGraph.User) {
const userInfo = [];
const userEmail = user.mail || user.userPrincipalName;
userInfo.push([user.displayName, userEmail]);
const userInfoRequestBody = {
index: null,
values: userInfo
};
const body = JSON.stringify(userInfoRequestBody);
var client = this.getClient();
var url = `${this.url}/me/drive/root:/${this.file}:/workbook/tables/${this.table}/rows/add`
return Observable.fromPromise(client
.api(url)
.post(body)
);
}
Добавление одной или нескольких строк в книгу Excel в React
Код для создания и отправки запросов см. в файле home.js в примере по работе с Excel в Microsoft Graph для React для начинающих.
Функция onWriteToExcel
создает двумерный строковый массив и передает его в виде тела запроса. Для осуществления HTTP-запроса в ней используется axios.
onWriteToExcel() {
const { token, me } = this.state;
const myEmailAddress = me.mail || me.userPrincipalName;
const values = [];
values.push([me.displayName, myEmailAddress]);
axios
.post('https://graph.microsoft.com/v1.0/me/drive/root:/demo.xlsx:/workbook/tables/Table1/rows/add',
{ index: null, values },
{ headers: { Authorization: `Bearer ${token}` }}
)
.then(res => {
console.log(res);
const successMessage = "Successfully wrote your data to demo.xlsx!";
this.setState ({ successMessage });
})
.catch(err => console.error(err));
}