找回密码
 立即注册

QQ登录

只需一步,快速开始

kaishui
金牌服务用户   /  发表于:2024-10-28 16:42  /   查看:246  /  回复:4
1金币
有没有方法将123.45元写成“壹佰贰拾叁元肆角伍分”,如果是123元就写成“壹佰贰拾叁元整”。目前我们用的这样的自定义格式,如果有小数点就不满足要求。


附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

感谢大佬的支持,您也可以尝试下这个插件看能否满足需求呢? https://marketplace.grapecity.com.cn/ApplicationDetails?productID=SP2104270009&productDetailID=D2104270026&tabName=Tabs_detail

4 个回复

倒序浏览
最佳答案
最佳答案
Simon.Sun活字格认证 Wyn认证
超级版主   /  发表于:2024-10-28 16:42:27
来自 3#
感谢大佬的支持,您也可以尝试下这个插件看能否满足需求呢?
https://marketplace.grapecity.co ... tabName=Tabs_detail
回复 使用道具 举报
二麻子
初级会员   /  发表于:2024-10-28 17:07:39
2#
本帖最后由 二麻子 于 2024-10-28 17:10 编辑
  1. 最后两行代码是适配活字格的,money和outPut分别指代单元格名称,money输入数字,output输入中文
复制代码
  1. //数字转大写
  2. function convertToChineseCurrency(num) {

  3.     // 确保 num 是数字
  4.     num = Number(num);

  5.     // 定义数字对应的大写中文
  6.     const digits = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"];
  7.     const units = ["", "拾", "佰", "仟"];
  8.     const bigUnits = ["", "万", "亿"];
  9.     const decimalUnits = ["角", "分"];

  10.     // 强制保留两位小数,并拆分整数和小数部分
  11.     const [integerPart, decimalPart] = num.toFixed(2).split(".");

  12.     // 转换整数部分
  13.     let integerResult = "";
  14.     const integerArray = integerPart.split("").reverse();
  15.     for (let i = 0; i < integerArray.length; i++) {
  16.         const digit = parseInt(integerArray[i]);
  17.         const unit = units[i % 4];
  18.         const bigUnit = bigUnits[Math.floor(i / 4)];

  19.         if (digit === 0) {
  20.             if (!integerResult.startsWith("零") && integerResult) {
  21.                 integerResult = "零" + integerResult;
  22.             }
  23.         } else {
  24.             integerResult = digits[digit] + unit + bigUnit + integerResult;
  25.         }
  26.     }
  27.     integerResult = integerResult.replace(/零+/g, "零").replace(/零$/, "");

  28.     // 转换小数部分
  29.     let decimalResult = "";
  30.     if (decimalPart !== "00") {
  31.         const jiao = parseInt(decimalPart.charAt(0));
  32.         const fen = parseInt(decimalPart.charAt(1));
  33.         if (jiao > 0) decimalResult += digits[jiao] + decimalUnits[0];
  34.         if (fen > 0) decimalResult += digits[fen] + decimalUnits[1];
  35.     }

  36.     // 合并整数和小数部分
  37.     return integerResult + "元" + (decimalResult || "整");
  38. }

  39. value = convertToChineseCurrency(Forguncy.Page.getCell("money").getValue())
  40. Forguncy.Page.getCell("outPut").setValue(value)
复制代码
  1. // 中文大写金额转数字
  2. function convertChineseCurrencyToNumber(chineseCurrency) {
  3.     // 定义大写数字对应的数值
  4.     const chineseDigits = {
  5.         "零": 0, "壹": 1, "贰": 2, "叁": 3, "肆": 4,
  6.         "伍": 5, "陆": 6, "柒": 7, "捌": 8, "玖": 9
  7.     };
  8.     const units = { "拾": 10, "佰": 100, "仟": 1000 };
  9.     const bigUnits = { "万": 10000, "亿": 100000000 };
  10.     const decimalUnits = { "角": 0.1, "分": 0.01 };

  11.     let integerPart = 0;
  12.     let decimalPart = 0;
  13.     let tempNum = 0;
  14.     let unit = 1;

  15.     for (let i = 0; i < chineseCurrency.length; i++) {
  16.         const char = chineseCurrency[i];

  17.         if (chineseDigits[char] !== undefined) {
  18.             tempNum = chineseDigits[char];
  19.         } else if (units[char] !== undefined) {
  20.             unit = units[char];
  21.             integerPart += tempNum * unit;
  22.             tempNum = 0;
  23.             unit = 1;
  24.         } else if (bigUnits[char] !== undefined) {
  25.             integerPart = (integerPart + tempNum) * bigUnits[char];
  26.             tempNum = 0;
  27.         } else if (decimalUnits[char] !== undefined) {
  28.             decimalPart += tempNum * decimalUnits[char];
  29.             tempNum = 0;
  30.         } else if (char === "元") {
  31.             integerPart += tempNum;
  32.             tempNum = 0;
  33.         } else if (char === "整") {
  34.             break;
  35.         }
  36.     }

  37.     integerPart += tempNum;
  38.     return integerPart + decimalPart;
  39. }

  40. value = convertChineseCurrencyToNumber(Forguncy.Page.getCell("outPut").getValue());
  41. Forguncy.Page.getCell("money").setValue(value);
复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
kaishui
金牌服务用户   /  发表于:2024-10-28 18:05:47
4#
Simon.Sun 发表于 2024-10-28 16:42
感谢大佬的支持,您也可以尝试下这个插件看能否满足需求呢?
https://marketplace.grapecity.com.cn/Appli ...

这个命令放到页面加载命令那里可以满足要求,谢谢
回复 使用道具 举报
Simon.Sun活字格认证 Wyn认证
超级版主   /  发表于:2024-10-29 08:35:45
5#
不客气,后续有问题欢迎您发新贴交流哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部