1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/onlymry-vue-antd-admin

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
ExcelOld.vue 3.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
aladdin233 Отправлено 5 лет назад d502776
<template>
<div>
<a-card>
<p>
<a-icon type="file-excel" style="font-size:32px;" />Execl上传
<input type="file" @change="changeEvent" ref="execl" name id />
<a-button @click="saveExecl">保存execl</a-button>
</p>
<a-table :columns="columns" :data-source="data">
<a slot="name" slot-scope="text">{{ text }}</a>
</a-table>
</a-card>
</div>
</template>
<script>
import XLSX from "xlsx";
const columns = [
{
title: "Name",
dataIndex: "name",
key: "name"
},
{
title: "Age",
dataIndex: "age",
key: "age",
width: 80
},
{
title: "Address",
dataIndex: "address",
key: "address 1",
ellipsis: true
},
{
title: "Long Column Long Column Long Column",
dataIndex: "address",
key: "address 2",
ellipsis: true
},
{
title: "Long Column Long Column",
dataIndex: "address",
key: "address 3",
ellipsis: true
},
{
title: "Long Column",
dataIndex: "address",
key: "address 4",
ellipsis: true
}
];
const data = [
{
key: "1",
name: "John Brown",
age: 32,
address: "New York No. 1 Lake Park, New York No. 1 Lake Park"
},
{
key: "2",
name: "Jim Green",
age: 42,
address: "London No. 2 Lake Park, London No. 2 Lake Park"
},
{
key: "3",
name: "Joe Black",
age: 32,
address: "Sidney No. 1 Lake Park, Sidney No. 1 Lake Park"
}
];
import Tools from "@/tools/tools.js";
export default {
data() {
return {
data,
columns,
execl: {}
};
},
methods: {
// 选中文件
changeEvent() {
// 获取当前input
let file = this.$refs.execl.files;
// 创建filereader
let fileReader = new FileReader();
// 把二进制数据流转为string
fileReader.readAsBinaryString(file[0]);
// execl表格里面的数据
let execl_data = [];
// filereader onload事件
fileReader.onload = ev => {
// 获取文件流
let data = ev.target.result;
try {
// 用xlsx插件转码当前文件流
let execl = XLSX.read(data, {
type: "binary"
});
// 一个execl有多个sheets,这里拿到的是所有的sheets
let Sheets = execl.Sheets;
// 读取所有的sheets
for (let sheet in Sheets) {
let isNotNull = Sheets[sheet]["!ref"];
// 判空
if (isNotNull !== undefined) {
// 获取execl所有数据
execl_data = execl_data.concat(
XLSX.utils.sheet_to_json(Sheets[sheet])
);
}
}
// 获取execl中数据的标题
let col = [];
for (const key in execl_data[0]) {
col.push({
title: key.toString(),
dataIndex: key.toString(),
key: key.toString(),
ellipsis: true
});
}
// 填充表头
this.columns = Tools.unique(col);
// 填充数据
this.data = execl_data;
} catch (e) {
console.error(e);
}
};
},
saveExecl() {
// 获取当前input
let file = this.$refs.execl.files;
// 创建filereader
let fileReader = new FileReader();
// 把二进制数据流转为string
fileReader.readAsBinaryString(file[0]);
fileReader.onload = ev => {
// 获取文件流
let data = ev.target.result;
try {
// 用xlsx插件转码当前文件流
let execl = XLSX.read(data, {
type: "binary"
});
XLSX.writeFile(execl, "out.xlsb");
// 获取execl中数据的标题
} catch (e) {
console.error(e);
}
};
}
}
};
</script>
<style lang="less" scoped>
p {
display: flex;
justify-content: flex-start;
align-items: center;
input {
margin-left: 30px;
}
}
</style>

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/onlymry-vue-antd-admin.git
git@gitlife.ru:oschina-mirror/onlymry-vue-antd-admin.git
oschina-mirror
onlymry-vue-antd-admin
onlymry-vue-antd-admin
dev