鱼C论坛

 找回密码
 立即注册
查看: 282|回复: 7

[已解决]求问这个值为啥一直不变

[复制链接]
发表于 2024-9-28 23:57:16 | 显示全部楼层 |阅读模式
10鱼币
总是返回-71.51376666666667,他是一个excel的函数,理论上,它应该和下面那个数组一样,但是,就是不一样,我想是不是我没关闭,所以它每次读的同一个值,太伤人了
最佳答案
2024-9-28 23:57:17
刘串 发表于 2024-09-29 01:14
还是总是一个值


鱼油你好!要确保用 JavaScript 更新 Excel 并然其公式重新计算,请按照以下步骤操作。你需要确保使用 `xlsx` 库正确更新并保存文件。以下示例代码展示了如何实现:
// 1. 引入所需模块
const XLSX = require('xlsx');
const fs = require('fs');

// 2. 读取现有的 Excel 文件
let workbook = XLSX.readFile('你的Excel文件.xlsx');

// 3. 选择要操作的工作表
let sheetName = workbook.SheetNames[0];
let worksheet = workbook.Sheets[sheetName];

// 4. 更新你需要修改的单元格数据(假设这里更新A1到A24)
for (let i = 1; i <= 24; i++) {
    worksheet['A' + i] = { v: i * 2 };  // 你可以自定义你的更新逻辑
}

// 5. 保存更新后的文件
XLSX.writeFile(workbook, '更新后的Excel文件.xlsx');

// 提醒:大部分情况下,XLSX 库并不会自动更新包含公式的单元格,这里需要用Excel软件打开一下文件,让它重新计算

注意,`XLSX` 库本身不会自动重新计算依赖于更新的公式。当你用代码修改了数据并保存文件后,公式单元格可能暂时不会更新,直到你用 Excel 软件手动打开文件,这时 Excel 自身的计算引擎会重新计算公式。

如果希望在代码中自动完成这一步,可以考虑使用 Puppeteer 或类似的自动化工具来自动打开、保存 Excel 文件,不过这会更复杂。下面是一个示范性思路:
const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch({
        headless: false, // 需要浏览器运行界面
        args: ['--start-maximized'] // 浏览器打开全屏
    });
    const page = await browser.newPage();
    await page.goto('file://path-to-your-local-file/更新后的Excel文件.xlsx'); // 替换成你本地Excel文件路径
    
    // 这里可以模拟一些操作,如点击保存按钮
    // 请注意,直接处理Excel文件的方法可能更复杂,
    // 需要根据实际环境和需求调整自动化脚本

    await page.keyboard.press('Control+s'); // 模拟保存操作
    await page.waitForTimeout(3000); // 等待保存完成

    await browser.close();
})();

此自动化思路仅作参考,具体实现你可以根据需要和实际环境调整。希望这些回答对你有所帮助!如有其他问题,欢迎继续留言。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

js问题

js问题

最佳答案

查看完整内容

鱼油你好!要确保用 JavaScript 更新 Excel 并然其公式重新计算,请按照以下步骤操作。你需要确保使用 `xlsx` 库正确更新并保存文件。以下示例代码展示了如何实现: 注意,`XLSX` 库本身不会自动重新计算依赖于更新的公式。当你用代码修改了数据并保存文件后,公式单元格可能暂时不会更新,直到你用 Excel 软件手动打开文件,这时 Excel 自身的计算引擎会重新计算公式。 如果希望在代码中自动完成这一步,可以考虑使 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-9-28 23:57:17 | 显示全部楼层    本楼为最佳答案   
刘串 发表于 2024-09-29 01:14
还是总是一个值


鱼油你好!要确保用 JavaScript 更新 Excel 并然其公式重新计算,请按照以下步骤操作。你需要确保使用 `xlsx` 库正确更新并保存文件。以下示例代码展示了如何实现:
// 1. 引入所需模块
const XLSX = require('xlsx');
const fs = require('fs');

// 2. 读取现有的 Excel 文件
let workbook = XLSX.readFile('你的Excel文件.xlsx');

// 3. 选择要操作的工作表
let sheetName = workbook.SheetNames[0];
let worksheet = workbook.Sheets[sheetName];

// 4. 更新你需要修改的单元格数据(假设这里更新A1到A24)
for (let i = 1; i <= 24; i++) {
    worksheet['A' + i] = { v: i * 2 };  // 你可以自定义你的更新逻辑
}

// 5. 保存更新后的文件
XLSX.writeFile(workbook, '更新后的Excel文件.xlsx');

// 提醒:大部分情况下,XLSX 库并不会自动更新包含公式的单元格,这里需要用Excel软件打开一下文件,让它重新计算

注意,`XLSX` 库本身不会自动重新计算依赖于更新的公式。当你用代码修改了数据并保存文件后,公式单元格可能暂时不会更新,直到你用 Excel 软件手动打开文件,这时 Excel 自身的计算引擎会重新计算公式。

如果希望在代码中自动完成这一步,可以考虑使用 Puppeteer 或类似的自动化工具来自动打开、保存 Excel 文件,不过这会更复杂。下面是一个示范性思路:
const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch({
        headless: false, // 需要浏览器运行界面
        args: ['--start-maximized'] // 浏览器打开全屏
    });
    const page = await browser.newPage();
    await page.goto('file://path-to-your-local-file/更新后的Excel文件.xlsx'); // 替换成你本地Excel文件路径
    
    // 这里可以模拟一些操作,如点击保存按钮
    // 请注意,直接处理Excel文件的方法可能更复杂,
    // 需要根据实际环境和需求调整自动化脚本

    await page.keyboard.press('Control+s'); // 模拟保存操作
    await page.waitForTimeout(3000); // 等待保存完成

    await browser.close();
})();

此自动化思路仅作参考,具体实现你可以根据需要和实际环境调整。希望这些回答对你有所帮助!如有其他问题,欢迎继续留言。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-9-28 23:57:26 | 显示全部楼层
鱼油你好!

根据你描述的情况,可能有以下几个原因导致 Excel 函数返回固定值:

1. **公式错误**:检查下你的公式是否正确无误。
2. **数组更新问题**:确保你引用的数组数据是动态更新的,而不是静态的不变的。
3. **计算模式问题**:Excel 可能设置成手动计算模式。检查【公式】选项卡,确认是否开启了自动计算功能。
4. **文件没保存更新**:看一下是否需要保存文件,或者重新打开文件。

试试上面的几个方法,如果还是解决不了问题,可以提供更详细的信息,我们再一起看看!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-9-29 00:01:54 | 显示全部楼层
FishC 发表于 2024-9-28 23:57
鱼油你好!

根据你描述的情况,可能有以下几个原因导致 Excel 函数返回固定值:

JavaScript的xlsx如何保存并关闭,实现更新,可以确定excel是没错的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-9-29 00:02:02 | 显示全部楼层
刘串 发表于 2024-09-29 00:01
JavaScript的xlsx如何保存并关闭,实现更新,可以确定 ...


好的,鱼油!如果你在使用 JavaScript 的 `xlsx` 库操作 Excel 文件,并希望保存更新后的文件,以下是一个示例代码,展示如何保存并关闭文件:

1. 首先,确保你已经安装了 `xlsx` 库:
npm install xlsx

2. 以下是一个示例代码,展示如何读取、修改并保存一个 Excel 文件:
const XLSX = require("xlsx");

// 1. 读取 Excel 文件
const workbook = XLSX.readFile("your-file.xlsx");

// 2. 选择一个工作表(假设工作表名为 "Sheet1")
const sheetName = "Sheet1";
const worksheet = workbook.Sheets[sheetName];

// 3. 修改工作表中的数据(根据你的需要进行修改)
const cell = worksheet["A1"];
cell.v = -71.51376666666667; // 修改单元格的值

// 4. 保存 Excel 文件
XLSX.writeFile(workbook, "your-file-updated.xlsx");

console.log('文件保存成功');

这个示例做了以下几件事:

1. 读取 Excel 文件 `your-file.xlsx`。
2. 选择第一个工作表 `Sheet1`。
3. 修改工作表中 `A1` 单元格的值为 `-71.51376666666667`。
4. 将修改后的工作簿保存为 `your-file-updated.xlsx`。

确保你使用的路径和文件名与实际一致。希望这个示例能帮助你更新并保存 Excel 文件!如果你有其他问题,请随时告知。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-9-29 00:09:48 | 显示全部楼层
FishC 发表于 2024-9-29 00:02
好的,鱼油!如果你在使用 JavaScript 的 `xlsx` 库操作 Excel 文件,并希望保存更新后的文件,以下是 ...

excel表如下,更新24个数据然后那个e27跟着应该变,实际它不变

shuizhi.zip

8.82 KB, 阅读权限: 5, 下载次数: 0

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-9-29 00:10:02 | 显示全部楼层
刘串 发表于 2024-09-29 00:09
excel表如下,更新24个数据然后那个e27跟着应该变,实 ...


鱼油你好!看起来你希望使用 JavaScript 的 `xlsx` 库修改 Excel 表中的数据,并希望看到公式计算结果自动更新。这是一个常见的问题,因为 `xlsx` 库不会自动重新计算包含公式的单元格。

要解决这个问题,你可以使用以下几种方法:

1. 修改数值后,手动在 Excel 中打开并重新保存,这样 Excel 会重新计算公式。
2. 使用一个支持公式计算的库,如 `exceljs`。
3. 通过手动计算公式的结果并更新相应单元格。

下面是一个使用 `exceljs` 的示例代码:

1. 安装 `exceljs`:
npm install exceljs

2. 示例代码:
const ExcelJS = require('exceljs');

// 读取Excel文件
const workbook = new ExcelJS.Workbook();
workbook.xlsx.readFile('your-file.xlsx')
  .then(() => {
    const worksheet = workbook.getWorksheet('Sheet1');

    // 假设我们要更新前24个数据:
    for (let i = 1; i <= 24; i++) {
      worksheet.getCell(`A${i}`).value = newValue;  // 这里 newValue 是你要更新的数据
    }

    // 保存文件
    return workbook.xlsx.writeFile('your-file-updated.xlsx');
  })
  .then(() => {
    console.log('文件保存成功');
  })
  .catch((error) => {
    console.error('出现错误: ', error);
  });
上述代码使用 `exceljs` 读取和写入 Excel 文件。这个库的好处是它会自动重新计算公式,只要公式在Excel文件中是正确的。

确保你在真实数据中替换示例中的 `newValue`。

如果你使用的库是 `xlsx` 并且不支持自动重新计算公式,你也可以直接计算公式并更新对应单元格,例如:
const XLSX = require('xlsx');

// 读取Excel文件
const workbook = XLSX.readFile('your-file.xlsx');
const sheetName = "Sheet1";
const worksheet = workbook.Sheets[sheetName];

// 更新前24个数据
for (let i = 1; i <= 24; i++) {
  worksheet[`A${i}`].v = newValue;  // 这里 newValue 是你要更新的数据
}

// 手动重新计算 e27 的值 (假设公式简单,可以在代码中直接计算)
worksheet['E27'].v = worksheet['A1'].v * 24;  // 这里是一个示例,你需要根据你的公式实际情况来修改

// 保存文件
XLSX.writeFile(workbook, "your-file-updated.xlsx");

console.log('文件保存成功');
请根据你的实际情况调整上面的代码来手动计算公式的结果。

希望这些方法能帮助你解决问题!如果还有其他问题,欢迎随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-9-29 01:14:32 | 显示全部楼层
FishC 发表于 2024-9-29 00:10
鱼油你好!看起来你希望使用 JavaScript 的 `xlsx` 库修改 Excel 表中的数据,并希望看到公式计算结果 ...

还是总是一个值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-12 17:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表