스프 레아 시트에서 웹 양식으로 복사하여 붙여 넣는 표준 방법이나 라이브러리가 있습니까? Excel에서 둘 이상의 셀을 선택하면 구분 기호가 없어지고 모두 웹 양식의 한 셀에 붙여 넣어집니다. VB에서해야합니까? 또는 웹 양식에서 붙여 넣기 작업이 시작되면 처리가 완료 될 수 있습니까?
스프 레아 시트에서 웹 양식으로 복사하여 붙여 넣는 표준 방법이나 라이브러리가 있습니까? Excel에서 둘 이상의 셀을 선택하면 구분 기호가 없어지고 모두 웹 양식의 한 셀에 붙여 넣어집니다. VB에서해야합니까? 또는 웹 양식에서 붙여 넣기 작업이 시작되면 처리가 완료 될 수 있습니까?
답변:
구분 기호를 잃지 않고 셀은 탭 ( \t)으로 구분되고 행 \n은 양식에 표시되지 않을 수있는 줄 바꿈 ( ) 으로 구분됩니다 . 직접 시도해보십시오. Excel에서 메모장으로 콘텐츠를 복사하면 셀이 잘 정렬 된 것을 볼 수 있습니다. 그러면 필드를 탭으로 분할하고 다른 것으로 대체하는 것이 쉽습니다. 이렇게하면 필드에서 테이블도 만들 수 있습니다. 다음은 jQuery를 사용하는 예입니다.
var data = $('input[name=excel_data]').val();
var rows = data.split("\n");
var table = $('<table />');
for(var y in rows) {
var cells = rows[y].split("\t");
var row = $('<tr />');
for(var x in cells) {
row.append('<td>'+cells[x]+'</td>');
}
table.append(row);
}
// Insert into DOM
$('#excel_table').html(table);
따라서 본질적으로이 스크립트는 붙여 넣은 Excel 데이터에서 HTML 테이블을 만듭니다.
td. 그냥 참고
Tatu의 답변에 대한 응답으로 그의 솔루션을 보여주기 위해 빠른 jsFiddle을 만들었습니다.
http://jsfiddle.net/duwood/sTX7y/
HTML
<p>Paste excel data here:</p>
<textarea name="excel_data" style="width:250px;height:150px;"></textarea><br>
<input type="button" onclick="javascript:generateTable()" value="Genereate Table"/>
<br><br>
<p>Table data will appear below</p>
<hr>
<div id="excel_table"></div>
JS
function generateTable() {
var data = $('textarea[name=excel_data]').val();
console.log(data);
var rows = data.split("\n");
var table = $('<table />');
for(var y in rows) {
var cells = rows[y].split("\t");
var row = $('<tr />');
for(var x in cells) {
row.append('<td>'+cells[x]+'</td>');
}
table.append(row);
}
// Insert into DOM
$('#excel_table').html(table);
}
에 OSX 와 윈도우 , 다른 유형의 컨텐츠에 대한 클립 보드의 여러 종류가 있습니다. Excel에서 콘텐츠를 복사하면 데이터가 일반 텍스트와 html 클립 보드에 저장됩니다.
구분 기호 문제로 인해 문제가 발생하지 않는 올바른 방법은 HTML을 구문 분석하는 것입니다. http://jsbin.com/uwuvan/5 는 HTML 클립 보드를 얻는 방법을 보여주는 간단한 데모입니다. 핵심은 onpaste 이벤트에 바인딩하고
event.clipboardData.getData('text/html')
Tatu와 같은 아이디어 (우리 프로젝트에서 곧 필요합니다),하지만 정규 표현식을 사용합니다.
큰 데이터 세트의 경우 더 빠를 수 있습니다.
<html>
<head>
<title>excelToTable</title>
<script src="../libs/jquery.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<textarea>a1 a2 a3
b1 b2 b3</textarea>
<div></div>
<input type="button" onclick="convert()" value="convert"/>
<script>
function convert(){
var xl = $('textarea').val();
$('div').html(
'<table><tr><td>' +
xl.replace(/\n+$/i, '').replace(/\n/g, '</tr><tr><td>').replace(/\t/g, '</td><td>') +
'</tr></table>'
)
}
</script>
</body>
</html>
나처럼 여기에 도착하는 미래의 Google 직원을 위해 @tatu Ulmanen의 개념을 사용하여 객체 배열로 바꿨습니다. 이 간단한 함수는 붙여 넣은 Excel (또는 Google 시트) 데이터 (가급적이면)의 문자열을 가져 와서 textarea객체 배열로 변환합니다. 열 / 속성 이름에 첫 번째 행을 사용합니다.
function excelToObjects(stringData){
var objects = [];
//split into rows
var rows = stringData.split('\n');
//Make columns
columns = rows[0].split('\t');
//Note how we start at rowNr = 1, because 0 is the column row
for (var rowNr = 1; rowNr < rows.length; rowNr++) {
var o = {};
var data = rows[rowNr].split('\t');
//Loop through all the data
for (var cellNr = 0; cellNr < data.length; cellNr++) {
o[columns[cellNr]] = data[cellNr];
}
objects.push(o);
}
return objects;
}
바라건대 그것은 미래의 누군가에게 도움이되기를 바랍니다.
업데이트 : MS Excel 대신 ONLYOFFICE를 사용하는 경우에만 해당됩니다.
실제로 여기에 제공된 모든 답변과 허용되는 답변에는 흐름이 있습니다. 흐름은 Excel에 빈 셀이 있고이를 복사 할 때마다 클립 보드에 서로 옆에 2 개의 탭 문자가 있으므로 분할 후 배열에 하나의 추가 항목이 표시되고 해당 행에 추가 셀로 나타납니다. 다른 모든 셀을 하나씩 이동합니다. 따라서 기본적으로 문자열의 모든 이중 탭 (서로 옆에있는 탭만) 문자를 하나의 탭 문자로 바꾼 다음 분할해야하는 것을 방지합니다.
@userfuser jsfiddle의 업데이트 된 버전은 removeExtraTabs로 붙여 넣은 데이터를 필터링하여이 문제를 해결하기 위해 여기에 있습니다.
http://jsfiddle.net/sTX7y/794/
function removeExtraTabs(string) {
return string.replace(new RegExp("\t\t", 'g'), "\t");
}
function generateTable() {
var data = removeExtraTabs($('#pastein').val());
var rows = data.split("\n");
var table = $('<table />');
for (var y in rows) {
var cells = rows[y].split("\t");
var row = $('<tr />');
for (var x in cells) {
row.append('<td>' + cells[x] + '</td>');
}
table.append(row);
}
// Insert into DOM
$('#excel_table').html(table);
}
$(document).ready(function() {
$('#pastein').on('paste', function(event) {
$('#pastein').on('input', function() {
generateTable();
$('#pastein').off('input');
})
})
})
누군가가 미래에 그것을 보게 될 경우를 대비하여 이것을 파십시오. 위의 코드를 의도 한대로 사용했지만 데이터베이스에 제출 된 후 테이블을 표시하는 데 문제가 발생했습니다. 데이터를 저장 한 후에는 PHP를 사용하여 쿼리의 새 줄과 탭을 대체하는 것이 훨씬 쉽습니다. 제출시 교체를 수행 할 수 있습니다. $ _POST [request]는 텍스트 영역의 이름입니다.
$postrequest = trim($_POST[request]);
$dirty = array("\n", "\t");
$clean = array('</tr><tr><td>', '</td><td>');
$request = str_replace($dirty, $clean, $postrequest);
이제 데이터베이스에 $ request를 삽입하면 HTML 테이블로 저장됩니다.
PHP에서 엑셀 파일을 읽은 다음 DB에 저장하거나 처리하는 것이 더 나을 것입니다.
여기 PHP로 Excel 데이터를 읽고 쓰는 방법에 대한 in-dept 튜토리얼 :
http://www.ibm.com/developerworks/opensource/library/os-phpexcel/index.html