Вообще в современных браузерах вполне себе работает с файлами
:
<!DOCTYPE HTML>
<html lang="ru-RU">
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{margin:0;padding:0}
html, body{
width: 100%;
height: 100%;
}
html, body, textarea, input{
font: 20px serif;
background-color: #220;
color: #ddf;
}
textarea{width: 100%;
height: 90%;
border: none;
}
</style>
<script type="text/javascript">
function read(files){ //чтение файлов
var i = files.length,
reader = new FileReader();
reader.onload = function(){
example( reader.result )
};
reader.readAsText(files[--i])
}
function arrayFromCSV( csv ){
var lines = csv.split(/[\r\n]+/), i = lines.length, //разбиваем на строки
array = new Array(i); // создаём массив
while(i--) array[i] = lines[i].split(','); //разбиваем по запятым, и заполняем массив
return array
}
function arrayToCSV( array ){
var csv = '';
console.log(array)
for(var i = 0, l = array.length; i<l; i++){
csv += (array[i] && array[i].join(',') || '') + '\r\n';
}
return csv
}
function rearrangeCols( array, order ){ //поменять местами колонки
var l = array.length,
out = new Array(l);
if(typeof order === 'number') order = Array.prototype.slice.call(arguments,1); //порядок может быть передан как массивом, ак и просто последовательно
var i = order.length;
while(l--){
out[l] = new Array(i);
for(var j = i; j--;){
out[l][j] = array[l][order[j]];
}
}
return out
}
function rearrangeRows( array, order ){ //поменять местами ряды
var l = array.length,
out = [array[0]],
def = array[0].length;
if(typeof order === 'number') order = Array.prototype.slice.call(arguments,1);
for(var i = 0, l = order.length; i<l; i++){
out.push( array[order[i]+1] || new Array(def) );
}
return out
}
function id(i){return document.getElementById(i)}
function example( csv ){
var table = arrayFromCSV( csv ),
text = id('textarea');
text.value = arrayToCSV( table );
table = rearrangeCols( table, 0, 2, 1 )
text.value += '\n===== rearrangeCols( table, 0, 2, 1 ) =====\n' +
arrayToCSV( table );
table = rearrangeRows( table, 1, 2, 0 )
text.value += '\n===== rearrangeRows( table, 0, 2, 1 ) =====\n' +
arrayToCSV( table );
function rearrangeArray( array , first, second){ //меняет местами элементы массива
var temp;
temp = array[first];
array[first] = array[second];
array[second] = first;
return array
}
function fixNames( array ){
var i = array.length,
nameCell = 2; //орядковым номер ячесйки с именем
while(i--){
if(array[i][nameCell]){ //если ячейча с порядковым номером 2 существует
var name = array[i][nameCell]
.slice(1,-1) //обрезаем кавычки
.split(/\s+/); //разбиваем по пробелу
if(name.length === 3) name[2] = name.splice(1,1,name[2])[0]; //меняем порядок
array[i][nameCell] = '"' + name.join(' ') + '"'; //склеиваем обратно
}
}
return array
}
text.value += '===== fixNames =====\n' +
arrayToCSV( fixNames( table ) );
}
</script>
</head>
<body>
<input id="file" type="file" onchange="read(files)" />
<textarea id="textarea"></textarea>
</body>
</html>
Сообщение от ksa
|
Нет у тебя никакой колонки... Есть гольный текст и ничего более.
|
CSV же, это какбэ потенциальная таблица.)
Тут хотят с помощью js решать вопросы к web-разработке не относящиеся, как раз такое люблю, потому помогу.))