Để hiểu rõ hơn, đây là một tệp excel ví dụ với ô ngôn ngữ được hợp nhất. và tôi muốn kết quả này. Tùy thuộc vào phần nào của mã nhận xét mà tôi thực thi, tôi nhận được các kết quả khác nhau trông giống với mã mà tôi muốn đạt được hoặc ít nhất có thể tiếp tục hoạt động với. Câu hỏi. Tôi cần tạo một xlsx với các ô được hợp nhất bằng sheetjs
Sheetjs xlsx, Làm cách nào để viết các ô đã hợp nhất?
Câu hỏi.
Tôi cần tạo một xlsx với các ô được hợp nhất bằng sheetjs
dữ liệu
[
{
"id": "nick",
"items": [
{
"name": "ball"
},
{
"name": "phone"
}
]
},
{
"id": "jack",
"items": [
{
"name": "pen"
},
{
"name": "doll"
}
]
}
]
Mã của tôi
var ws = XLSX.utils.json_to_sheet[data];
var wb = XLSX.utils.book_new[];
XLSX.utils.book_append_sheet[wb, ws, ""];
var wbout = XLSX.write[wb, {bookType:'xlsx', type:'array'}];
saveAs[new Blob[[wbout],{type:"application/octet-stream"}], filename + ".xlsx"];
Kết quả tôi muốn nhận được
Làm thế nào để tôi có được kết quả này?
Cảm ơn
Giải pháp.
const merge = [
{ s: { r: 1, c: 0 }, e: { r: 2, c: 0 } },{ s: { r: 3, c: 0 }, e: { r: 4, c: 0 } },
];
ws["!merges"] = merge;
Sử dụng mã này để hợp nhất A2. A3 [
var ws = XLSX.utils.json_to_sheet[data];
var wb = XLSX.utils.book_new[];
XLSX.utils.book_append_sheet[wb, ws, ""];
var wbout = XLSX.write[wb, {bookType:'xlsx', type:'array'}];
saveAs[new Blob[[wbout],{type:"application/octet-stream"}], filename + ".xlsx"];
1 ] và A4. A5 [ var ws = XLSX.utils.json_to_sheet[data];
var wb = XLSX.utils.book_new[];
XLSX.utils.book_append_sheet[wb, ws, ""];
var wbout = XLSX.write[wb, {bookType:'xlsx', type:'array'}];
saveAs[new Blob[[wbout],{type:"application/octet-stream"}], filename + ".xlsx"];
2 ]Ở đây s = bắt đầu, r = hàng, c=col, e= kết thúc
Sheetjs xlsx, Làm cách nào để viết các ô đã hợp nhất?, tôi cũng đang mong đợi lib sẽ tạo trang tính mong muốn với đối tượng json đã cho. nhưng có vẻ như mảng lồng nhau không được xử lý tốt. sẽ quay lại khi tìm ra giải pháp. bây giờ thông tin tôi nhận được từ google. , có vẻ như khách hàng cần chỉ định rõ ràng hàng/cột hợp nhất. Hợp nhất sampleconst mã = [{ s. {r. 1, c. 0 }, e. {r. 2, c. 0 } },{ s. {r. 3, c. 0 }, e. {r. 4, c. 0 } },];ws[". hợp nhất"] = hợp nhất; Phản hồi
thẻ
js xlsx cách xóa hàng có các ô đã hợp nhất sheetjs xlsx cách viết các ô đã hợp nhất
Chuyển thành. xlsx với các ô được hợp nhất thành JSON với SheetJS
Câu hỏi
Tôi đang cố đọc một. xlsx bằng SheetJS và chuyển đổi nó thành JSON. Tôi có thể đọc và chuyển đổi một ô đơn giản [không có ô được hợp nhất]. xlsx thành JSON, nhưng tôi không hiểu đúng với các ô được hợp nhất
Vấn đề là tôi có một. xlsx với các sản phẩm ở các ngôn ngữ khác nhau
Tôi đã thử tìm kiếm giải pháp trên các trang web khác nhau và kho lưu trữ github của SheetJS https. //github. com/sheetjs/js-xlsx/#json với thành công tầm thường. Chủ yếu là giải quyết cách viết các ô được hợp nhất
function handleFile[e] {
var files = e.target.files, f = files[0];
var reader = new FileReader[];
reader.onload = function[e] {
var data = new Uint8Array[e.target.result];
var workbook = XLSX.read[data, {type: 'array'}];
let result = '';
let sheet_name_list = workbook.SheetNames;
// iterate through sheets
sheet_name_list.forEach[function [y] {
workbook.Sheets[y]['!merges'].map[r => {
let startChar = XLSX.utils.encode_range[r].split[':'][0].replace[/[^a-zA-Z]+/g, ''];
let endChar = XLSX.utils.encode_range[r].split[':'][1].replace[/[^a-zA-Z]+/g, ''];
let number = XLSX.utils.encode_range[r].split[':'][0].match[/[+-]?\d+[?:\.\d+]?/g][0];
for [let i = numbersFromLetters[startChar]; i < numbersFromLetters[endChar]; i++] {
workbook.Sheets[y][numbersToLetters[i + 1] + number] = {t:'s'};
workbook.Sheets[y][numbersToLetters[i + 1] + number].v = workbook.Sheets[y][XLSX.utils.encode_range[r].split[':'][0]].v;
workbook.Sheets[y][numbersToLetters[i + 1] + number].h = workbook.Sheets[y][XLSX.utils.encode_range[r].split[':'][0]].v;
workbook.Sheets[y][numbersToLetters[i + 1] + number].w = workbook.Sheets[y][XLSX.utils.encode_range[r].split[':'][0]].v;
workbook.Sheets[y][numbersToLetters[i + 1] + number].r = '' + workbook.Sheets[y][XLSX.utils.encode_range[r].split[':'][0]].v + '';
}
}];
// Convert the cell value to JSON
//let roa = XLSX.utils.sheet_to_json[workbook.Sheets[y]];
//let roa = XLSX.utils.sheet_to_json[workbook.Sheets[y], {range: 1}];
let roa = XLSX.utils.sheet_to_json[workbook.Sheets[y], {header: 1}];
//let roa = XLSX.utils.sheet_to_json[workbook.Sheets[y], {skipHeader: true}];
//let roa = XLSX.utils.sheet_to_json[workbook.Sheets[y], {header: 1, range: 1}];
if [roa.length > 0] result = roa;
}];
console.log[result];
};
reader.readAsArrayBuffer[f];
}
Để hiểu rõ hơn, đây là một tệp excel ví dụ với ô ngôn ngữ được hợp nhất.
và tôi muốn kết quả này
[
{ "languages":
[
{
"language": "US",
"name": "blue pants"
},
{
"language": "DE",
"name": "blaue Hose"
},
{
"language": "ES",
"name": "pantalones azules"
}
],
"price": 29.9,
"category": "pants"
},
...
]
Tùy thuộc vào phần nào của mã nhận xét mà tôi thực thi, tôi nhận được các kết quả khác nhau trông giống với mã mà tôi muốn đạt được hoặc ít nhất có thể tiếp tục hoạt động với. Nhưng ở mỗi kết quả, tôi cần tìm hiểu thêm về điều mà tôi thấy rằng có thể có một giải pháp tốt hơn
Giải pháp
const workbook = XLSX.readFile[fileName, readOptions];
const sheetNames = workbook.SheetNames;
for [let worksheet of sheetNames] {
if [workbook.Sheets[worksheet]['!merges']]
workbook.Sheets[worksheet]['!merges'].map[[merge] => {
const value = XLSX.utils.encode_range[merge].split[':'][0];
for [let col = merge.s.c; col