Откройте .xlsx, скопируйте шаблон листа, поместите данные и сохраните - PullRequest
0 голосов
/ 09 января 2019

Вот моя большая проблема. Мне нужно добавить кнопку в существующий проект на AngularJS. Пока пользователь нажимает на него, сайт должен открывать диалог открытия файла. Затем пользователь должен выбрать файл .xslx, а приложение должно скопировать лист шаблона из книги выбора, добавить в него данные и открыть диалоговое окно сохранения файла. Теперь у меня есть:

$scope.fileNameChanged = function (excel_loader) {
		  
		  var files = excel_loader.files;
		  var xlxsFile = files[0];
		  var fileName = xlxsFile.name;
		  alert("got filename " + fileName);
		  
		  
		};
    
    function addCellToSheet(worksheet, address, value) {
		/* cell object */
		var cell = {t:'?', v:value};

		/* assign type */
		if(typeof value == "string") cell.t = 's'; // string
		else if(typeof value == "number") cell.t = 'n'; // number
		else if(value === true || value === false) cell.t = 'b'; // boolean
		else if(value instanceof Date) cell.t = 'd';
		else throw new Error("cannot store value");

		/* add to worksheet, overwriting a cell if it exists */
		worksheet[address] = cell;

		/* find the cell range */
		var range = XLSX.utils.decode_range(worksheet['!ref']);
		var addr = XLSX.utils.decode_cell(address);

		/* extend the range to include the new cell */
		if(range.s.c > addr.c) range.s.c = addr.c;
		if(range.s.r > addr.r) range.s.r = addr.r;
		if(range.e.c < addr.c) range.e.c = addr.c;
		if(range.e.r < addr.r) range.e.r = addr.r;

		/* update range */
		worksheet['!ref'] = XLSX.utils.encode_range(range);
}
<label class="import-file">
			  <input type="file" id = "excel_loader"  class="btn btn-default" accept = ".xlsx" onchange="angular.element(this).scope().fileNameChanged(this)">
			  </label>

Но я не знаю, как проанализировать файл xlsx и добавить в него данные. Я пробую 100500 примеров, но они не работают% (На самом деле я вижу AngularJS в первый раз, но не могу использовать другие методы

...