Excel에서 웹 페이지로 복사/붙여넣기
재무 시트에서 웹 양식에 복사하여 붙여넣는 표준 방법 또는 라이브러리가 있습니까?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 테이블을 만듭니다.
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 와 Windows 에서는, 다양한 컨텐츠의 타입에 대응하는 복수의 타입의 클립보드가 있습니다.Excel에서 내용을 복사하면 데이터가 일반 텍스트 및 HTML 클립보드에 저장됩니다.
올바른 방법( 딜리미터 문제로 인해 문제가 발생하지 않음)은 HTML을 해석하는 것입니다.http://jsbin.com/uwuvan/5은 HTML 클립보드를 얻는 방법을 보여주는 간단한 데모입니다.중요한 것은 붙여넣기 이벤트에 바인드하여
event.clipboardData.getData('text/html')
나처럼 나중에 구글에 올 사람들을 위해 @tatu Ulmanen의 컨셉을 사용하여 여러 개의 오브젝트로 만들었습니다.이 단순한 함수는 붙여넣은 엑셀(또는 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;
}
그것이 미래에 누군가에게 도움이 되기를 바란다.
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>
업데이트: 이것은 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');
})
})
})
Excel 2007 에는, 「데이터」탭아래에서 이 기능을 유효하게 하는 기능이 있습니다.
나중에 누가 발견할지 모르니까 이걸 파헤치는 거야상기의 코드를 그대로 사용하고 있습니다만, 데이타베이스에 송신한 후에, 표가 표시되는 문제가 발생했습니다.데이터를 저장하고 나면 쿼리의 새 줄과 탭을 대체하기 위해 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에 저장하거나 처리를 하는 것이 좋을지도 모릅니다.
를 사용한 및 내 : Excel 데이터 읽기 및 쓰기 방법:
http://www.ibm.com/developerworks/opensource/library/os-phpexcel/index.htmlhttpwww.ibm.com//opensource/library/os-phpexcel/index.html
언급URL : https://stackoverflow.com/questions/2006468/copy-paste-from-excel-to-a-web-page
'programing' 카테고리의 다른 글
| 개체 ID를 가진 클라이언트에 'Microsoft' 작업을 수행할 수 있는 권한이 없습니다.Data Factory / 데이터 팩토리 / 데이터 라인 / 읽기' 범위 초과 (0) | 2023.04.21 |
|---|---|
| 스레드 세이프 Collection View는 어디서 구할 수 있나요? (0) | 2023.04.21 |
| 실행 시 WPF 버튼의 이미지가 표시되지 않음 (0) | 2023.04.21 |
| azure brocredmessage는 타입을 모른 채 몸을 구한다. (0) | 2023.04.21 |
| TextBlock 텍스트가 트리밍되고 있는지 확인하려면 어떻게 해야 합니까? (0) | 2023.04.21 |