У меня была та же проблема, эээ, потратили несколько часов, пока, наконец, не нашли решение
Короче:
1) Создать частную сущность [ 115] android-sdk-license.sh
с таким содержанием:
#!/bin/bash
set -ex
cd $ANDROID_HOME
mkdir -p licenses
cat << EOF >> licenses/android-sdk-license
8933bad161af4178b1185d1a37fbf41ea5269c55
d56f5187479451eabf01fb78af6dfcb131a6481e
24333f8a63b6825ea9c5514f83c2829b004d1fee
EOF
2) Получить необработанную ссылку на этот файл
3) Создать jitpack.yml
в корне вашего проекта с таким содержанием: [ 1110]
#!/bin/bash
before_install:
- curl PASTE_RAW_LINK_TO_GIST | sh
4) Commit & amp; push
Надеюсь, это поможет
Это - выборка из моего метода, который преобразовывает DataTable (dt переменная) в массив и затем пишет массив в Диапазон на рабочем листе (wsh var). Можно также заменить topRow переменную к любой строке, в которую Вы хотите, чтобы массив строк был помещен.
object[,] arr = new object[dt.Rows.Count, dt.Columns.Count];
for (int r = 0; r < dt.Rows.Count; r++)
{
DataRow dr = dt.Rows[r];
for (int c = 0; c < dt.Columns.Count; c++)
{
arr[r, c] = dr[c];
}
}
Excel.Range c1 = (Excel.Range)wsh.Cells[topRow, 1];
Excel.Range c2 = (Excel.Range)wsh.Cells[topRow + dt.Rows.Count - 1, dt.Columns.Count];
Excel.Range range = wsh.get_Range(c1, c2);
range.Value = arr;
, Конечно, Вы не должны использовать промежуточный DataTable как, я сделал, выборка кода должна только продемонстрировать, как массив может быть записан в рабочий лист в единственном вызове.
Спасибо за парней указателей - Значение по сравнению с аргументом Value2 получило меня другой набор результатов поиска, которые помогли мне понять, каков ответ. Кстати, свойство Value является параметрическим свойством, к которому нужно получить доступ через средство доступа в C#. Их называют get_Value и set_Value, и берут дополнительное перечисление значений. Если кто-либо заинтересовал, это объясняет это приятно .
возможно сделать присвоение через свойство Value2 однако, которое предпочтительно, как interop документация рекомендует против использования использования get_Value и set_Value методов по причинам вне моего понимания.
ключ, кажется, размер массива объектов. Чтобы вызов работал, массив должен быть объявлен как двумерный, даже если Вы только присваиваете одномерные данные.
я объявил свой массив данных как object[NumberofRows,1]
, и вызов присвоения работал.
Вы могли поместить свои данные в recordset и использование Метод CopyFromRecordset Excel - это намного быстрее, чем заполнение ячейки ячейкой.
можно создать recordset из набора данных с помощью этот код . Необходимо будет сделать, некоторые пробные версии для наблюдения при использовании этого метода быстрее, чем, что Вы в настоящее время делаете.
добавьте класс ExcelUtility к своему проекту и наслаждайтесь им.
содержание файла ExcelUtility.cs :
using System;
using Microsoft.Office.Interop.Excel;
static class ExcelUtility
{
public static void WriteArray<T>(this _Worksheet sheet, int startRow, int startColumn, T[,] array)
{
var row = array.GetLength(0);
var col = array.GetLength(1);
Range c1 = (Range) sheet.Cells[startRow, startColumn];
Range c2 = (Range) sheet.Cells[startRow + row - 1, startColumn + col - 1];
Range range = sheet.Range[c1, c2];
range.Value = array;
}
public static bool SaveToExcel<T>(T[,] data, string path)
{
try
{
//Start Excel and get Application object.
var oXl = new Application {Visible = false};
//Get a new workbook.
var oWb = (_Workbook) (oXl.Workbooks.Add(""));
var oSheet = (_Worksheet) oWb.ActiveSheet;
//oSheet.WriteArray(1, 1, bufferData1);
oSheet.WriteArray(1, 1, data);
oXl.Visible = false;
oXl.UserControl = false;
oWb.SaveAs(path, XlFileFormat.xlWorkbookDefault, Type.Missing,
Type.Missing, false, false, XlSaveAsAccessMode.xlNoChange,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
oWb.Close(false);
oXl.Quit();
}
catch (Exception e)
{
return false;
}
return true;
}
}
использование:
var data = new[,]
{
{11, 12, 13, 14, 15, 16, 17, 18, 19, 20},
{21, 22, 23, 24, 25, 26, 27, 28, 29, 30},
{31, 32, 33, 34, 35, 36, 37, 38, 39, 40}
};
ExcelUtility.SaveToExcel(data, "test.xlsx");
С наилучшими пожеланиями!