как форматировать колонку ..
Всем привет. Есть csv файл с примерным содержанием ..
Account Number,"Name","Company" 01-000667,"George P Schell","Market Place Products" 01-002423,"Marc S Brittan","Madson & Huth Communication Co"... по сколько javascript на прямую не работает с файлами и по скольку у меня нет опыта с серверной частью, данные файла были вставлены в в body.. вопрос.. как можно обратиться к колонке Name и поменять формат с Name, Middle Initial, Last Name на формат Name, Last Name, Middle Initial для всех имен? Заранее спасибо! |
Вложений: 1
К примеру. Можно ли обратиться к колонке Name и все что ниже нее отсортировать чтобы отображалось в браузере не George P Schell а George Schell P и так все ниже стоящие имена?
Буду очень благодарна! ..) |
Цитата:
Цитата:
|
Вообще в современных браузерах вполне себе работает с файлами :) :
<!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>
Цитата:
Тут хотят с помощью js решать вопросы к web-разработке не относящиеся, как раз такое люблю, потому помогу.)) |
Цитата:
Цитата:
|
Aetae, cпасибо !! :)
|
| Часовой пояс GMT +3, время: 13:20. |