Я хочу прочитать файл csv с помощью jQuery и html и посмотреть, применяется ли условие к ячейке. Итак, в основном у меня есть CSV-файл с транзакциями, и я хочу проверить, соответствует ли эта транзакция моему ключевому слову, а затем программа присвоит ей определенный идентификационный номер, и я также хочу экспортировать его в отдельный CSV.
Это все, что я придумал:
<div class = "input-group">
<input type = "file" class = "form-control" id = "csv" aria-describedby = "file" aria-label = "Upload">
<button class = "btn btn-outline-light btn-primary" type = "button" id = "upload">Upload</button>
</div>
<script>
$(document).ready(function(){
$("#upload").clicked(function(){
})
});
});
function handleFileSelect() {
// get the file input element
var input = document.getElementById('fileInput');
// get the selected file
var file = input.files[0];
// read the file
var reader = new FileReader();
reader.readAsText(file);
// when the file is read, process it
reader.onload = function(event) {
var csv = event.target.result;
processData(csv);
}
}
//Call the handleFileSelect function when the file input element changes:
//Implement the processData function to parse the CSV data and do something with it:
function processData(csv) {
// split the CSV data into rows
var rows = csv.split('\n');
// loop over the rows
for (var i = 0; i < rows.length; i++) {
// split the row into columns
var cols = rows[i].split(',');
// do something with the data
console.info(cols);
// you can add another loop here and apply the condition on desired column
}
}
<form>
<input type = "file" id = "fileInput" accept = ".csv" onchange = "handleFileSelect()" />
</form>
Вот и все! Теперь, когда пользователь выбирает файл CSV, он будет прочитан и данные будут обработаны. Вы можете настроить функцию processData, чтобы делать с данными все, что хотите, например отображать их в таблице или диаграмме.
Чтобы сохранить данные обратно в файл CSV с помощью JavaScript, вы можете выполнить следующие шаги:
Создайте функцию, которая берет данные, которые вы хотите сохранить, и преобразует их в строку CSV.
function toCsv(data) {
// convert the data array into a 2D array
// if the data is already a 2D array, you can skip this step
var data2D = data.map(function(row) {
return row.split(',');
});
// create an array to store the CSV rows
var csv = [];
// loop over the 2D data array
for (var i = 0; i < data2D.length; i++) {
// convert the row into a CSV string and add it to the array
csv.push(data2D[i].join(','));
}
// join the CSV rows into a single string and return it
return csv.join('\n');
}
Создайте функцию, которая принимает строку CSV и запускает загрузку CSV-файла. Вы можете сделать это, создав элемент ссылки, установив для его атрибута href строку CSV, а затем щелкнув по нему:
function downloadCsv(csv) {
// create a link element
var link = document.createElement('a');
// set the link's href to the CSV string
link.href = 'data:text/csv;charset=utf-8,' + encodeURIComponent(csv);
// set the link's download attribute
link.download = 'data.csv';
// append the link to the DOM
document.body.appendChild(link);
// click the link
link.click();
// remove the link from the DOM
document.body.removeChild(link);
}
Вызовите функции toCsv и downloadCsv, когда хотите сохранить данные:
var data = ['a,b,c', 'd,e,f', 'g,h,i'];
var csv = toCsv(data);
downloadCsv(csv);
затем вам нужно создать строку csv, снова соединив ее запятой (,). Как только это будет сделано, создайте новый массив csv и вставьте строку в этот массив. После того, как все строки, разделенные запятыми, будут нажаты, вы можете сделать csv.join('\n').
Спасибо, но я столкнулся с проблемой при установке условия. Потому что формат массива не является многомерным массивом. Если вы можете помочь мне с кодом и дать мне точный код, это было бы здорово.
Я добавил код, но это всего лишь предложение преуспеть на этой платформе, вы не можете просить конкретный код, подобный этому. Я знаю, что вы новичок, поэтому ободряю вас, но в будущем лучше не искать точный код, потому что так вы ничему не научитесь. Разделите свою проблему на более мелкие шаги, а затем попытайтесь решить этот шаг, который в конечном итоге поможет вам в изучении и решении ваших проблем. Удачи!!
Большое спасибо за помощь. Я очень ценю это. Я только начал программировать, мне 13 лет. Это было очень полезно. Еще раз спасибо.
Если вы имеете в виду источник данных CSV, который доступен вам в Интернете (помните о возможных ограничениях CORS) и хотите использовать его в качестве основы для дальнейших проверок данных, вы можете загрузить его асинхронно с помощью jQuery следующим образом. :
var holidays; // global array of objects (available only after asynchronous loading has finished!)
$.get("https://date.nager.at/PublicHoliday/Country/DE/2023/CSV").done(function(csv){
holidays=$.csv.toObjects(csv);
console.info(holidays);
})
<script src = "https://code.jquery.com/jquery-3.6.3.min.js"></script>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery-csv/1.0.21/jquery.csv.min.js"></script>
jQuery CVS — ваш друг здесь: https://www.jqueryscript.net/other/Parsing-Displaying-CSV-Files-jQuery.html.
Большое спасибо, у меня есть один быстрый вопрос, если вместо этого я хочу экспортировать его как другой CSV, как мне это сделать. Я немного новичок в программировании.