programing

Excel에서 웹 페이지로 복사/붙여넣기

mbctv 2023. 4. 21. 21:18
반응형

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);
}

OSXWindows 에서는, 다양한 컨텐츠의 타입에 대응하는 복수의 타입의 클립보드가 있습니다.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

반응형