diff --git a/packages/engine-formula/src/basics/date.ts b/packages/engine-formula/src/basics/date.ts index be3f026a4a..7624e89b41 100644 --- a/packages/engine-formula/src/basics/date.ts +++ b/packages/engine-formula/src/basics/date.ts @@ -160,10 +160,6 @@ export function parseFormattedDate(value: string) { return numfmt.parseDate(value); } -export function parseFormattedValue(value: string) { - return numfmt.parseValue(value); -} - export function parseFormattedTime(value: string) { return numfmt.parseTime(value); } diff --git a/packages/engine-formula/src/functions/date/timevalue/index.ts b/packages/engine-formula/src/functions/date/timevalue/index.ts index e6587af834..5adac050e8 100644 --- a/packages/engine-formula/src/functions/date/timevalue/index.ts +++ b/packages/engine-formula/src/functions/date/timevalue/index.ts @@ -15,7 +15,8 @@ */ import type { BaseValueObject } from '../../../engine/value-object/base-value-object'; -import { excelDateTimeSerial, isDate, parseFormattedValue } from '../../../basics/date'; +import { getNumfmtParseValueFilter } from '@univerjs/core'; +import { excelDateTimeSerial, isDate } from '../../../basics/date'; import { ErrorType } from '../../../basics/error-type'; import { getFractionalPart } from '../../../engine/utils/math-kit'; import { ErrorValueObject } from '../../../engine/value-object/base-value-object'; @@ -46,7 +47,7 @@ export class Timevalue extends BaseFunction { if (timeTextObject.isString()) { const value = `${timeTextObject.getValue()}`; - const parsedTime = parseFormattedValue(value); + const parsedTime = getNumfmtParseValueFilter(value); if (parsedTime) { let { v, z } = parsedTime; diff --git a/packages/sheets-table/src/model/filter-util/condition.ts b/packages/sheets-table/src/model/filter-util/condition.ts index bf832382bf..f309e70d98 100644 --- a/packages/sheets-table/src/model/filter-util/condition.ts +++ b/packages/sheets-table/src/model/filter-util/condition.ts @@ -130,7 +130,6 @@ function getNumberCellValue(sheet: Worksheet, row: number, col: number) { return null; } if (typeof v === 'string' && t === CellValueType.NUMBER) { - // use this way to instead of numfmt.parseNumber(v as string).v as number; return Number(sheet.getCellRaw(row, col)!.v); } return Number(v); diff --git a/packages/sheets-ui/src/controllers/clipboard/clipboard.controller.ts b/packages/sheets-ui/src/controllers/clipboard/clipboard.controller.ts index 42ca6fc940..2939554978 100644 --- a/packages/sheets-ui/src/controllers/clipboard/clipboard.controller.ts +++ b/packages/sheets-ui/src/controllers/clipboard/clipboard.controller.ts @@ -42,9 +42,7 @@ import type { ISheetDiscreteRangeLocation, } from '../../services/clipboard/type'; import type { IScrollStateWithSearchParam } from '../../services/scroll-manager.service'; - import type { IUniverSheetsUIConfig } from '../config.schema'; - import { BooleanNumber, DEFAULT_WORKSHEET_COLUMN_WIDTH, @@ -52,6 +50,7 @@ import { DEFAULT_WORKSHEET_ROW_HEIGHT, DOCS_NORMAL_EDITOR_UNIT_ID_KEY, extractPureTextFromCell, + getNumfmtParseValueFilter, handleStyleToString, ICommandService, IConfigService, @@ -61,16 +60,13 @@ import { isFormulaString, IUniverInstanceService, LocaleService, - numfmt, ObjectMatrix, RxDisposable, Tools, UniverInstanceType, } from '@univerjs/core'; - import { MessageType } from '@univerjs/design'; import { convertBodyToHtml, DocSelectionRenderService } from '@univerjs/docs-ui'; - import { IRenderManagerService, withCurrentTypeOfRenderer } from '@univerjs/engine-render'; import { InsertColMutation, @@ -635,7 +631,7 @@ export class SheetClipboardController extends RxDisposable { }, }; } else { - const pattern = numfmt.parseNumber(text); + const pattern = getNumfmtParseValueFilter(text); if (pattern?.z) { cellValue = { [range.rows[0]]: { diff --git a/packages/sheets-ui/src/controllers/clipboard/utils.ts b/packages/sheets-ui/src/controllers/clipboard/utils.ts index 7acd71d4fe..94f9e3242f 100644 --- a/packages/sheets-ui/src/controllers/clipboard/utils.ts +++ b/packages/sheets-ui/src/controllers/clipboard/utils.ts @@ -35,9 +35,9 @@ import { CustomRangeType, DEFAULT_STYLES, generateRandomId, + getNumfmtParseValueFilter, isTextFormat, IUniverInstanceService, - numfmt, ObjectMatrix, Range, Rectangle, @@ -364,7 +364,7 @@ export function getSetCellValueMutations( cellValue.t = CellValueType.STRING; } else { const content = String(value.v); - const numfmtValue = numfmt.parseValue(content); + const numfmtValue = getNumfmtParseValueFilter(content); if (numfmtValue?.v !== undefined && typeof numfmtValue.v === 'number') { // If the numeric string will lose precision when converted to a number, set the cell type to force string // e.g. 123456789123456789 @@ -474,7 +474,7 @@ export function getSetCellStyleMutations( (newValue.s as IStyleData).n = style?.n; } else { const content = String(value.v); - const numfmtValue = numfmt.parseValue(content); + const numfmtValue = getNumfmtParseValueFilter(content); if (numfmtValue?.z) { if (!newValue.s) { newValue.s = {}; diff --git a/packages/sheets-ui/src/controllers/utils/char-tools.ts b/packages/sheets-ui/src/controllers/utils/char-tools.ts index 2261693333..d1f2dd7149 100644 --- a/packages/sheets-ui/src/controllers/utils/char-tools.ts +++ b/packages/sheets-ui/src/controllers/utils/char-tools.ts @@ -16,7 +16,7 @@ /* eslint-disable antfu/consistent-list-newline */ import type { IFunctionService, ISequenceNode, LexerTreeBuilder } from '@univerjs/engine-formula'; -import { LocaleType, numfmt } from '@univerjs/core'; +import { getNumfmtParseValueFilter, LocaleType, numfmt } from '@univerjs/core'; import { matchToken, sequenceNodeType } from '@univerjs/engine-formula'; const fullWidthToHalfWidthMap: { [key: string]: string } = { @@ -94,7 +94,7 @@ export function normalizeString(str: string, lexerTreeBuilder: LexerTreeBuilder, } // Formatting Numbers - const parsedValue = numfmt.parseValue(normalStr); + const parsedValue = getNumfmtParseValueFilter(normalStr); return parsedValue == null ? str : normalStr; } @@ -160,7 +160,7 @@ function normalizeFormulaString(str: string, normalStr: string, lexerTreeBuilder const endIndex = node.endIndex + totalOffset + 1; _normalStr = replaceString(str.slice(startIndex, endIndex), _normalStr, startIndex, endIndex); } else if (node.nodeType !== sequenceNodeType.ARRAY) { - const parsedValue = numfmt.parseValue(token); + const parsedValue = getNumfmtParseValueFilter(token); if (parsedValue == null) { const startIndex = node.startIndex + totalOffset + 1; diff --git a/packages/sheets-ui/src/services/clipboard/html-to-usm/converter.ts b/packages/sheets-ui/src/services/clipboard/html-to-usm/converter.ts index d7f8d1f25a..65a1cd09db 100644 --- a/packages/sheets-ui/src/services/clipboard/html-to-usm/converter.ts +++ b/packages/sheets-ui/src/services/clipboard/html-to-usm/converter.ts @@ -19,7 +19,6 @@ import type { ICustomRange, IDocumentBody, IDocumentData, ITextRun, ITextStyle, Nullable } from '@univerjs/core'; import type { SpreadsheetSkeleton } from '@univerjs/engine-render'; import type { ISheetSkeletonManagerParam } from '../../sheet-skeleton-manager.service'; - import type { ICellDataWithSpanInfo, IClipboardPropertyItem, @@ -27,7 +26,7 @@ import type { IUniverSheetCopyDataModel, } from '../type'; import type { IAfterProcessRule, IPastePlugin } from './paste-plugins/type'; -import { CustomRangeType, DEFAULT_WORKSHEET_ROW_HEIGHT, generateRandomId, numfmt, ObjectMatrix, skipParseTagNames } from '@univerjs/core'; +import { CustomRangeType, DEFAULT_WORKSHEET_ROW_HEIGHT, generateRandomId, getNumfmtParseValueFilter, ObjectMatrix, skipParseTagNames } from '@univerjs/core'; import { handleStringToStyle, textTrim } from '@univerjs/ui'; import { extractNodeStyle } from './parse-node-style'; import parseToDom, { convertToCellStyle, generateParagraphs } from './utils'; @@ -474,8 +473,8 @@ export class HtmlToUSMService { * "              1,234.57 " */ if (cell.innerHTML.includes('mso-spacerun:yes')) { - const cellText = cell.innerHTML.replace(/]*mso-spacerun:yes[^>]*>[\s\S]*?<\/span>/gi, ''); - const parseInfo = numfmt.parseNumber(cellText); + const cellText = cell.innerHTML.replace(/]*mso-spacerun:yes[^>]*>[\s\S]*?<\/span>/gi, '').replace(/\s/g, ''); + const parseInfo = getNumfmtParseValueFilter(cellText); if (parseInfo && parseInfo.v !== undefined && parseInfo.v !== null) { return {