HTML 표를 CSV 파일로 저장하는 중입니다. 이상적으로 이것은 크로스 브라우저 여야하며 인터넷 익스플로러를 제외한 모든 기능을 수행 할 수 있습니다. 그러나 나는 명백한 부품을 작동 시켰습니다. 남아있는 것은 자바 스크립트에서 작동중인 CSV 파일을 가져올 수 없다는 것입니다. 바이트 순서 표시가 다운로드하려는 데이터 앞에 추가되기 때문입니다.자바 스크립트 인터넷 익스플로러 바이트 순서 표
IE에서 csv 파일을 비롯한 모든 항목을 다운로드하여 16 진수 편집기를 사용하여 원시 파일을 확인한 결과 Internet Explorer에서 다운로드 한 파일에 유니 코드 문자 "FFFE"가 추가되었는지 확인할 수 있습니다.
아래 코드를 참조하십시오. saveTable은 테이블 내에 "<a>"노드를 사용합니다.
누구든지 내가이 문제를 잘 모르고 해결할 수 있다면 감사할만한 해결책을 제시 할 수 있습니다. 내 허구를 조금이라도 용서해주세요, 전에 이런 성격의 사이트를 사용한 적이 없다고 생각합니다. 따라서 더 자세한 정보를 제공해야하는 경우 알려 주시면 최선을 다해 여기에 올리겠습니다.
function findTable(node) { // Finds a nodes parent table.
return (node.nodeName !== "TABLE") ? findTable(node.parentNode) : node;
}
function saveTable(node) {
var csv = [];
var table = findTable(node);
var rows = table.getElementsByTagName("tr");
var header = [];
var csv = [];
for (var i = 0; i < rows.length; i++) {
if (i == 0) {
// Do csv stuff.
var dates = rows[i].getElementsByTagName("th");
for (var j = 0; j < dates.length; j++)
(j == 0) ? header.push("") : header.push(dates[j].innerHTML);
csv.push(header.join(","));
}
else {
var rowArray = [];
var jobName = rows[i].getElementsByTagName("th")[0].innerHTML;
var times = rows[i].getElementsByTagName("td");
rowArray.push(jobName);
for (var k = 0; k < times.length; k++)
rowArray.push(times[k].innerHTML);
csv.push(rowArray.join(","));
}
}
node.setAttribute("href", "data:text/csv;charset=utf-8," + csv.join("%0A"));
var fileName = "spreadsheet_data-" + (new Date).getTime() + ".csv";
if (node.download == "")
node.setAttribute("download", fileName);
else {
alert("Handle IE here!");
var bom = "\uFFFE";
var doc = document.open("application/octet-stream", "_blank");
var data = csv.join("\r\n");
doc.charset = "UTF-8";
doc.write(data.replace(bom, ""));
doc.focus();
doc.execCommand('SaveAs', false, fileName);
doc.close();
}
}
표 예, 그것은 내가 나 자신을 위해 선택한 것입니다 방법은 아니지만, 테이블이 다른 종류의 소프트웨어에 의해 생성되는 방법입니다.
<table id='results' border='1'>
<tr><th><a href='#' onClick='saveTable(this);' id='download_link'>Download data</a></th><th>2013/05/09</th><th>2013/05/10</th><th>2013/05/10</th><th>2013/05/10</th><th>2013/05/10</th></tr>
<tr>
<th>\PDF\EXOVIGN.PDF</th><td>8.853</td><td>9.050</td><td>8.807</td><td>8.827</td><td>8.835</td></tr>
</table>
질문에 최소한의 HTML을 추가하여 제발 뭔가를 제공해 주시겠습니까? 우리는 테이블에 한 행의 데이터 만 필요하며 어떤 스타일링도 필요하지 않습니다. –
WS2003에서 IE8을 사용하여 확장명을 ".csv"에서 ".txt"로 변경하여 저장해야합니다 (핫픽스를 적용하지 않으려 고합니다. http://support.microsoft.com/kb/929863). . 나는'data.replace'의 유무에 관계없이 파일의 시작 부분에 BOM을 얻지 못했습니다. 오늘 가정용 컴퓨터 용 광대역이 오늘 저녁에 다시 작동한다면 W7/IE10에서 테스트 할 수 있습니다. –
이 방법이 작동하는지 확인할 수 있지만 사용자가 파일 이름을 바꿀 필요는 없습니다. 주위에 방법이 있습니까? –