ooxml-excel-editor 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +95 -0
- package/LICENSE +21 -0
- package/README.md +516 -0
- package/dist/chunks/plugin-overlay-Cfnn9EOi.js +7144 -0
- package/dist/chunks/worker-client.stub-BQVZfaLd.js +7 -0
- package/dist/components/ActionToolbar.vue.d.ts +9 -0
- package/dist/components/ExcelViewer.vue.d.ts +283 -0
- package/dist/components/ExportDialog.vue.d.ts +14 -0
- package/dist/components/FilterPopup.vue.d.ts +21 -0
- package/dist/components/FindBar.vue.d.ts +27 -0
- package/dist/components/SheetTabs.vue.d.ts +11 -0
- package/dist/components/ToolbarMenu.vue.d.ts +10 -0
- package/dist/components/ViewerToolbar.vue.d.ts +21 -0
- package/dist/components/export-types.d.ts +14 -0
- package/dist/components/toolbar-icons.d.ts +7 -0
- package/dist/components/toolbar-types.d.ts +18 -0
- package/dist/composables/useExcelDocument.d.ts +17 -0
- package/dist/composables/worker-client.d.ts +3 -0
- package/dist/composables/worker-client.stub.d.ts +3 -0
- package/dist/core/edit/commands.d.ts +94 -0
- package/dist/core/edit/default-editor.d.ts +2 -0
- package/dist/core/edit/edit-controller.d.ts +137 -0
- package/dist/core/edit/editor-context.d.ts +40 -0
- package/dist/core/edit/editor-host.d.ts +22 -0
- package/dist/core/edit/permissions.d.ts +3 -0
- package/dist/core/edit/types.d.ts +23 -0
- package/dist/core/export/composite.d.ts +18 -0
- package/dist/core/export/data-export.d.ts +9 -0
- package/dist/core/export/exporter.d.ts +64 -0
- package/dist/core/export/index.d.ts +9 -0
- package/dist/core/export/paginate.d.ts +36 -0
- package/dist/core/export/pdf.d.ts +28 -0
- package/dist/core/export/print.d.ts +3 -0
- package/dist/core/export/raster.d.ts +13 -0
- package/dist/core/export/types.d.ts +92 -0
- package/dist/core/export/vector-pdf.d.ts +42 -0
- package/dist/core/export/xlsx-writer.d.ts +15 -0
- package/dist/core/finalize.d.ts +10 -0
- package/dist/core/format/builtin-formats.d.ts +7 -0
- package/dist/core/format/color.d.ts +11 -0
- package/dist/core/format/date-serial.d.ts +16 -0
- package/dist/core/format/number-format.d.ts +5 -0
- package/dist/core/formula/engine.d.ts +27 -0
- package/dist/core/formula/hyperformula-adapter.d.ts +3 -0
- package/dist/core/formula/recalc.d.ts +9 -0
- package/dist/core/formula/refs.d.ts +21 -0
- package/dist/core/index.d.ts +52 -0
- package/dist/core/layout/autofit.d.ts +2 -0
- package/dist/core/layout/freeze.d.ts +11 -0
- package/dist/core/layout/grid-metrics.d.ts +37 -0
- package/dist/core/layout/merges.d.ts +14 -0
- package/dist/core/layout/units.d.ts +20 -0
- package/dist/core/layout/viewport.d.ts +29 -0
- package/dist/core/loader.d.ts +5 -0
- package/dist/core/model/clone.d.ts +9 -0
- package/dist/core/model/data-access.d.ts +30 -0
- package/dist/core/model/mutations.d.ts +46 -0
- package/dist/core/model/snapshot.d.ts +14 -0
- package/dist/core/model/structure.d.ts +26 -0
- package/dist/core/model/types.d.ts +289 -0
- package/dist/core/overlay/anchor.d.ts +9 -0
- package/dist/core/overlay/chart-mapper.d.ts +3 -0
- package/dist/core/overlay/echarts-loader.d.ts +3 -0
- package/dist/core/parse.worker.d.ts +14 -0
- package/dist/core/parser/chart-parser.d.ts +3 -0
- package/dist/core/parser/drawing-parser.d.ts +3 -0
- package/dist/core/parser/exceljs-adapter.d.ts +8 -0
- package/dist/core/parser/index.d.ts +3 -0
- package/dist/core/parser/page-break-parser.d.ts +3 -0
- package/dist/core/parser/raw-xml.d.ts +15 -0
- package/dist/core/parser/sparkline-parser.d.ts +3 -0
- package/dist/core/parser/theme.d.ts +3 -0
- package/dist/core/plugin.d.ts +180 -0
- package/dist/core/progress.d.ts +7 -0
- package/dist/core/render/autofilter.d.ts +14 -0
- package/dist/core/render/borders.d.ts +13 -0
- package/dist/core/render/canvas-renderer.d.ts +225 -0
- package/dist/core/render/conditional.d.ts +25 -0
- package/dist/core/render/fills.d.ts +2 -0
- package/dist/core/render/text.d.ts +20 -0
- package/dist/core/render/theme.d.ts +19 -0
- package/dist/core/viewer/controller.d.ts +339 -0
- package/dist/core/viewer/overlay-manager.d.ts +27 -0
- package/dist/core/viewer/plugin-overlay.d.ts +8 -0
- package/dist/core.d.ts +2 -0
- package/dist/core.js +74 -0
- package/dist/demo-shared/demo-editor.d.ts +2 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +1493 -0
- package/dist/react/ExcelViewer.d.ts +153 -0
- package/dist/react/index.d.ts +11 -0
- package/dist/react/use-excel-document.d.ts +17 -0
- package/dist/react.d.ts +2 -0
- package/dist/react.js +838 -0
- package/dist/style.css +1 -0
- package/package.json +117 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { CSSProperties } from 'react';
|
|
2
|
+
import { CellModel, CellStyleFn, CellStyleOverride, ImageAnchor, MergeRange, TransformModelFn, WorkbookModel } from '../core/model/types';
|
|
3
|
+
import { FormulaEngineFactory } from '../core/formula/engine';
|
|
4
|
+
import { CellChangePayload, DimChangePayload, DirtyChangePayload, ImageChangePayload, StructChangePayload } from '../core/edit/edit-controller';
|
|
5
|
+
import { CellSnapshot } from '../core/model/snapshot';
|
|
6
|
+
import { CellValue, getCellValue, getSheetData, getRangeData, sheetToJSON, ReadOptions, SheetToJSONOptions } from '../core/model/data-access';
|
|
7
|
+
import { EditorResolver } from '../core/edit/editor-context';
|
|
8
|
+
import { ViewerTheme } from '../core/render/theme';
|
|
9
|
+
import { ExcelSource } from '../core/loader';
|
|
10
|
+
import { ImageExportOptions, PdfExportOptions, PrintOptions } from '../core/export';
|
|
11
|
+
import { XlsxExportOptions } from '../core/export/xlsx-writer';
|
|
12
|
+
import { Cell } from '../core/viewer/controller';
|
|
13
|
+
import { ExcelPlugin } from '../core/plugin';
|
|
14
|
+
export interface ExcelViewerProps {
|
|
15
|
+
src?: ExcelSource;
|
|
16
|
+
fileName?: string;
|
|
17
|
+
theme?: Partial<ViewerTheme>;
|
|
18
|
+
/** 单击超链接是否自动打开(默认 true) */
|
|
19
|
+
openLinks?: boolean;
|
|
20
|
+
transformModel?: TransformModelFn;
|
|
21
|
+
cellStyle?: CellStyleFn;
|
|
22
|
+
/** 插件(与 Vue 通用):theme/transformModel/cellStyle/events/overlay/setup 全跨框架可用 */
|
|
23
|
+
plugins?: ExcelPlugin[];
|
|
24
|
+
/** 编辑总开关:默认 false = 只读(行为不变)。开启后才能进入编辑(E0:闸门) */
|
|
25
|
+
editable?: boolean;
|
|
26
|
+
/** 按格只读判定:返回 true = 只读(cell 为空格时传 null) */
|
|
27
|
+
cellReadOnly?: (cell: CellModel | null, pos: {
|
|
28
|
+
row: number;
|
|
29
|
+
col: number;
|
|
30
|
+
}) => boolean | void;
|
|
31
|
+
/** 只读区域(0-based 闭区间);命中即只读 */
|
|
32
|
+
readOnlyRanges?: MergeRange[];
|
|
33
|
+
/** 自定义单元格编辑器(按格返回工厂;覆盖插件 editor)。需 editable 开启 */
|
|
34
|
+
editor?: EditorResolver;
|
|
35
|
+
/** 公式重算(E4):默认 false 沿用缓存值。开启后编辑公式/被引用格 → 依赖格自动重算。需 editable */
|
|
36
|
+
recalc?: boolean;
|
|
37
|
+
/** 自定义/自研公式引擎工厂(可换引擎);不给则用默认 HyperFormula(需 npm i hyperformula) */
|
|
38
|
+
formulaEngine?: FormulaEngineFactory;
|
|
39
|
+
className?: string;
|
|
40
|
+
style?: CSSProperties;
|
|
41
|
+
onRendered?: (wb: WorkbookModel) => void;
|
|
42
|
+
onError?: (msg: string) => void;
|
|
43
|
+
onCellClick?: (p: {
|
|
44
|
+
row: number;
|
|
45
|
+
col: number;
|
|
46
|
+
text: string;
|
|
47
|
+
}) => void;
|
|
48
|
+
onCellDblClick?: (p: {
|
|
49
|
+
row: number;
|
|
50
|
+
col: number;
|
|
51
|
+
text: string;
|
|
52
|
+
}) => void;
|
|
53
|
+
onSelectionChange?: (p: {
|
|
54
|
+
range: MergeRange;
|
|
55
|
+
active: Cell;
|
|
56
|
+
}) => void;
|
|
57
|
+
onHyperlinkClick?: (p: {
|
|
58
|
+
url: string;
|
|
59
|
+
cell: Cell;
|
|
60
|
+
}) => void;
|
|
61
|
+
onSheetChange?: (p: {
|
|
62
|
+
index: number;
|
|
63
|
+
name: string;
|
|
64
|
+
}) => void;
|
|
65
|
+
/** 单元格变更(编辑/撤销/重做;含前后完整快照) */
|
|
66
|
+
onCellChange?: (p: CellChangePayload) => void;
|
|
67
|
+
onEditStart?: (p: unknown) => void;
|
|
68
|
+
onEditCommit?: (p: unknown) => void;
|
|
69
|
+
/** 列宽/行高变更(拖拽/autofit/API/撤销重做;前后 px 尺寸) */
|
|
70
|
+
onDimChange?: (p: DimChangePayload) => void;
|
|
71
|
+
/** 脏状态变更(有/无未保存修改) */
|
|
72
|
+
onDirtyChange?: (p: DirtyChangePayload) => void;
|
|
73
|
+
/** 图片增删移改(前后 ImageAnchor) */
|
|
74
|
+
onImageChange?: (p: ImageChangePayload) => void;
|
|
75
|
+
/** 行列结构变更(增删行列) */
|
|
76
|
+
onStructChange?: (p: StructChangePayload) => void;
|
|
77
|
+
}
|
|
78
|
+
/** 命令式句柄(与 Vue ref / ViewerApi 对齐) */
|
|
79
|
+
export interface ExcelViewerHandle {
|
|
80
|
+
load: (src: ExcelSource) => void;
|
|
81
|
+
getWorkbook: () => WorkbookModel | null;
|
|
82
|
+
getActiveSheet: () => number;
|
|
83
|
+
setActiveSheet: (i: number) => void;
|
|
84
|
+
getSelection: () => MergeRange | null;
|
|
85
|
+
setSelection: (range: MergeRange) => void;
|
|
86
|
+
rectOf: (row: number, col: number) => {
|
|
87
|
+
x: number;
|
|
88
|
+
y: number;
|
|
89
|
+
w: number;
|
|
90
|
+
h: number;
|
|
91
|
+
} | null;
|
|
92
|
+
rectOfRange: (range: MergeRange) => {
|
|
93
|
+
x: number;
|
|
94
|
+
y: number;
|
|
95
|
+
w: number;
|
|
96
|
+
h: number;
|
|
97
|
+
} | null;
|
|
98
|
+
redraw: () => void;
|
|
99
|
+
isCellEditable: (row: number, col: number) => boolean;
|
|
100
|
+
editCell: (row: number, col: number, value: CellValue) => boolean;
|
|
101
|
+
editRange: (range: MergeRange, values: CellValue[][]) => boolean;
|
|
102
|
+
clearRange: (range: MergeRange) => boolean;
|
|
103
|
+
setStyle: (range: MergeRange, patch: CellStyleOverride) => boolean;
|
|
104
|
+
getImages: () => ImageAnchor[];
|
|
105
|
+
addImage: (anchor: ImageAnchor) => number;
|
|
106
|
+
removeImage: (index: number) => boolean;
|
|
107
|
+
moveImage: (index: number, dxPx: number, dyPx: number) => boolean;
|
|
108
|
+
resizeImage: (index: number, widthPx: number, heightPx: number) => boolean;
|
|
109
|
+
insertRows: (at: number, count?: number) => boolean;
|
|
110
|
+
deleteRows: (at: number, count?: number) => boolean;
|
|
111
|
+
insertCols: (at: number, count?: number) => boolean;
|
|
112
|
+
deleteCols: (at: number, count?: number) => boolean;
|
|
113
|
+
undo: () => void;
|
|
114
|
+
redo: () => void;
|
|
115
|
+
canUndo: () => boolean;
|
|
116
|
+
canRedo: () => boolean;
|
|
117
|
+
getEditingCell: () => {
|
|
118
|
+
row: number;
|
|
119
|
+
col: number;
|
|
120
|
+
} | null;
|
|
121
|
+
getCellSnapshot: (row: number, col: number) => CellSnapshot | null;
|
|
122
|
+
beginEdit: (row: number, col: number) => boolean;
|
|
123
|
+
cancelEdit: () => void;
|
|
124
|
+
isEditing: () => boolean;
|
|
125
|
+
setColumnWidth: (col: number, width: number) => boolean;
|
|
126
|
+
setRowHeight: (row: number, height: number) => boolean;
|
|
127
|
+
isRecalcReady: () => boolean;
|
|
128
|
+
isDirty: () => boolean;
|
|
129
|
+
resetToOriginal: () => boolean;
|
|
130
|
+
exportImage: (opts?: ImageExportOptions) => Promise<Blob>;
|
|
131
|
+
downloadImage: (opts?: ImageExportOptions) => Promise<void>;
|
|
132
|
+
exportPdf: (opts?: PdfExportOptions) => Promise<Blob>;
|
|
133
|
+
downloadPdf: (opts?: PdfExportOptions) => Promise<void>;
|
|
134
|
+
print: (opts?: PrintOptions) => Promise<void>;
|
|
135
|
+
exportXlsx: (opts?: XlsxExportOptions) => Promise<Blob>;
|
|
136
|
+
downloadXlsx: (opts?: XlsxExportOptions) => Promise<void>;
|
|
137
|
+
exportJson: (opts?: SheetToJSONOptions) => string;
|
|
138
|
+
downloadJson: (opts?: SheetToJSONOptions) => void;
|
|
139
|
+
exportCsv: (opts?: {
|
|
140
|
+
target?: number;
|
|
141
|
+
format?: boolean;
|
|
142
|
+
}) => string;
|
|
143
|
+
downloadCsv: (opts?: {
|
|
144
|
+
target?: number;
|
|
145
|
+
format?: boolean;
|
|
146
|
+
}) => void;
|
|
147
|
+
getCellValue: (row: number, col: number, sheet?: number) => ReturnType<typeof getCellValue>;
|
|
148
|
+
getCellText: (row: number, col: number, sheet?: number) => string;
|
|
149
|
+
getSheetData: (opts?: ReadOptions, sheet?: number) => ReturnType<typeof getSheetData>;
|
|
150
|
+
getSheetJSON: (opts?: Parameters<typeof sheetToJSON>[1], sheet?: number) => ReturnType<typeof sheetToJSON>;
|
|
151
|
+
getRangeData: (range: MergeRange, opts?: ReadOptions, sheet?: number) => ReturnType<typeof getRangeData>;
|
|
152
|
+
}
|
|
153
|
+
export declare const ExcelViewer: import('react').ForwardRefExoticComponent<ExcelViewerProps & import('react').RefAttributes<ExcelViewerHandle>>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React 入口。其它 React 项目这样用:
|
|
3
|
+
* import { ExcelViewer } from 'ooxml-excel-editor/react'
|
|
4
|
+
* import 'ooxml-excel-editor/react/style.css' // (打包后)
|
|
5
|
+
*
|
|
6
|
+
* 与 Vue 版共用同一套 core 引擎(ViewerController + 解析/渲染/导出)。
|
|
7
|
+
*/
|
|
8
|
+
export { ExcelViewer } from './ExcelViewer';
|
|
9
|
+
export type { ExcelViewerProps, ExcelViewerHandle } from './ExcelViewer';
|
|
10
|
+
export { useExcelDocument } from './use-excel-document';
|
|
11
|
+
export type { ExcelDocument } from './use-excel-document';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { TransformModelFn, WorkbookModel } from '../core/model/types';
|
|
2
|
+
import { ParseProgress } from '../core/progress';
|
|
3
|
+
import { ExcelSource } from '../core/loader';
|
|
4
|
+
export interface ExcelDocument {
|
|
5
|
+
loading: boolean;
|
|
6
|
+
error: string | null;
|
|
7
|
+
workbook: WorkbookModel | null;
|
|
8
|
+
progress: ParseProgress | null;
|
|
9
|
+
load: (src: ExcelSource, transform?: TransformModelFn) => Promise<void>;
|
|
10
|
+
/** 原始字节(高保真 overlay 导出用) */
|
|
11
|
+
sourceBuffer: ArrayBuffer | null;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* React 版文档加载 hook —— 与 Vue 的 useExcelDocument 同逻辑(共用 core 的 loader/finalize/worker)。
|
|
15
|
+
* 解析走 worker(大文件不卡),按文件头给友好错误,完成后 finalizeImages 落 blob url。
|
|
16
|
+
*/
|
|
17
|
+
export declare function useExcelDocument(): ExcelDocument;
|
package/dist/react.d.ts
ADDED