| 123456789101112131415161718192021222324252627282930313233 |
- const fs = require('fs');
- const dec = s => String(s).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/ /g, ' ').replace(/"/g, '"');
- const ss = fs.readFileSync('d:/AI文件夹/预算报价/_xz1/xl/sharedStrings.xml', 'utf8');
- const sis = [];
- let m;
- const siRe = /<si>([\s\S]*?)<\/si>/g;
- while ((m = siRe.exec(ss))) {
- const inner = m[1];
- const ts = [...inner.matchAll(/<t[^>]*>([\s\S]*?)<\/t>/g)].map(x => x[1]).join('');
- sis.push(dec(ts));
- }
- const sh = fs.readFileSync('d:/AI文件夹/预算报价/_xz1/xl/worksheets/sheet1.xml', 'utf8');
- const rowRe = /<row[^>]*r="(\d+)"[^>]*>([\s\S]*?)<\/row>/g;
- const out = [];
- while ((m = rowRe.exec(sh))) {
- const rn = m[1], body = m[2];
- const cells = [];
- const cre = /<c r="([A-Z]+)\d+"([^/>]*)(?:\/>|>([\s\S]*?)<\/c>)/g;
- let cm;
- while ((cm = cre.exec(body))) {
- const col = cm[1], attrs = cm[2] || '', inner = cm[3] || '';
- const t = (attrs.match(/t="([^"]+)"/) || [])[1] || 'n';
- const f = (inner.match(/<f[^>]*>([\s\S]*?)<\/f>/) || [])[1] || '';
- const v = (inner.match(/<v>([\s\S]*?)<\/v>/) || [])[1] || '';
- let val = v;
- if (t === 's') val = sis[+v] || '';
- else if (t === 'inlineStr') val = (inner.match(/<t[^>]*>([\s\S]*?)<\/t>/) || [])[1] || '';
- cells.push(col + '=' + dec(val) + (f ? '{' + dec(f) + '}' : ''));
- }
- if (cells.length) out.push(rn + ': ' + cells.join(' | '));
- }
- fs.writeFileSync('d:/AI文件夹/预算报价/_xzrows.txt', out.join('\r\n'), 'utf8');
- console.log('rows', out.length);
|