杀死在 Matlab 中创建的 Excel 进程

2023-12-12

鉴于我写入工作簿,目前我会终止所有 Excel 进程,以便我的代码在循环调用时可以正常工作。

xlswrite(path,values);
system('taskkill /F /IM EXCEL.EXE');

这使得我在处理另一个 Excel 文件时无法运行代码。如何使 Matlab 仅终止其自身创建的 Excel 进程?


这是 R2015b 左右引入的一个“功能”,用于加速对 Excel 的多次写入...对用户/内存不太友好!

The xlswrite文档链接到此MathWorks 支持解答使用手动写入 Excelactxserver,然后您可以手动删除引用 Excel 的 COM 对象。

你其实可以edit xlswrite并看到它使用matlab.io.internal.getExcelInstance,它执行相同的操作并创建一个 COM 接口actxserver.

一个厚脸皮的选择是复制xlswrite,添加Excel它创建作为输出的变量,并且Quit and delete之后就可以了,如下图所示。我不主张破坏 MathWorks 对该函数的任何版权所有权。

一个不那么厚颜无耻的选择是根据我上面链接的答案创建一个类似的函数,仅用于写入数据,它看起来像这样:

function xlswriteClean( File, Data, Range )
% XLSWRITECELAN writes data like XLSWRITE, but deletes the Excel instance! 
%  XLSWRITECELAN (FILE,DATA,RANGE) writes the variable in
%  DATA to FILE, in the range specified by RANGE. 
%  RANGE is optional, defaults to "A1"
    % Obtain the full path name of the file
    % Could handle this more elegantly, i.e. 
    % this always assumes the current directory, but user might give a full path
    file = fullfile(pwd, File);
    % Open an ActiveX connection to Excel
    h = actxserver('excel.application');
    %Create a new work book (excel file)
    wb = h.WorkBooks.Add();
    % Select the appropriate range
    if nargin < 3
        Range = 'A1';
    end
    rng = h.Activesheet.get('Range', Range); 
    % Write the data to the range
    rng.value = Data; 
    % Save the file with the given file name, close Excel
    wb.SaveAs( File );  
    % Clean up - the point of this function
    wb.Close;
    h.Quit;
    h.delete;
end

您可以使用 COM 对象自定义新 Excel 工作簿中的基本所有内容h,这样您就可以添加您使用的任何功能xlswrite比如工作表命名等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

杀死在 Matlab 中创建的 Excel 进程 的相关文章

  • 在 Matlab 中保存 Kinect 深度图像?

    通过使用 Kinect 我可以获得深度图像 其中每个深度图像像素存储相机和物体之间的距离 以毫米为单位 现在我想保存它们以便以后使用 最好的推荐是什么 我正在考虑将深度图像保存为图像 jpg png等 然而 该值通常是从50毫米到10000
  • matlab 中的动画绘图

    我正在尝试创建一个三角形的动画图 最终结果应该是十个三角形 后面跟着两个更大的三角形 后面跟着一条直线 使用matlab文档 https de mathworks com help matlab ref drawnow html 我最终得到
  • 保存符号方程以供以后使用?

    From here http www mathworks com help releases R2011a toolbox symbolic brvfu8o 1 html brvfxem 1 我正在尝试求解这样的符号方程组 syms x y
  • 通过颜色渐变修补圆

    我正在尝试绘制一个颜色渐变 我希望它沿轴均匀 在下图由角度定义的情况下 pi 7 当我使用patch命令 绘图与所需的梯度方向匹配 但沿其方向并不均匀 沿圆的点之间形成各种三角形 这是代码 N 120 theta linspace pi p
  • 帮助我理解FFT函数(Matlab)

    1 除了负频率之外 FFT 函数提供的最小频率是多少 是零吗 2 如果它为零 我们如何在对数刻度上绘制零 3 结果总是对称的 或者只是看起来是对称的 4 如果我使用abs fft y 来比较2个信号 我是否会失去一些准确性 1 除了负频率之
  • 在矩阵中找到叉的最快方法

    定义 A i j 1 是十字的中点 如果元素A i 1 j 1A i 1 j 1A i j 1 1A i j 1 1 这些元素和中点一起形成矩阵 A 中的十字 其中 A 至少是一个 3 3 矩阵 并且i j 0 假设上图是 8 8 矩阵 A
  • 基本矩阵错误?

    我试图通过扫描从相机拍摄的两个图像 检测图像中的特征 匹配它们 创建基本矩阵 使用相机内在函数计算基本矩阵 然后分解它以找到旋转和翻译 这是matlab代码 I1 rgb2gray imread 1 png I2 rgb2gray imre
  • matlab中优先级队列的实现方法

    matlab中有没有提供minpriorityqueue功能的库 import java util PriorityQueue import java util public class MyQueue Comparator
  • Matlab 中的 3D 堆叠条形图

    我想在一个图中绘制多个堆叠条形图 detached 条形图 例如 准确地想象一下bar http mathworks com help matlab ref bar3 detached png绘图 但堆叠在一起 而不是单一颜色 Set up
  • MATLAB 问题中的 Parfor

    为什么我不能使用parfor在这段代码中 parfor i 1 r for j 1 N r xr j N r i 1 x i r j 1 end end 这是错误 错误 parfor 中的变量 xr 无法分类 请参阅 MATLAB 中的并行
  • MATLAB - 从目录读取文件?

    我希望从目录中读取文件并对每个文件迭代执行操作 此操作不需要更改文件 我知道我应该为此使用 for 循环 到目前为止我已经尝试过 FILES ls path to folder for i 1 size FILES 1 STRU pdbre
  • Matlab的uicontrol在Octave中的实现?

    我正在尝试在 Octave 中运行我们实验室中使用的图形程序的 m Matlab 代码 Octave 告诉我代码中使用的函数 uicontrol 没有定义 经过一番搜索 我发现 JHandles 包有一个 uicontrol GUI 功能的
  • 如何从列中创建对称矩阵?

    例如 我想转动以下列 90 175 600 650 655 660 代入矩阵 90 175 600 650 655 660 175 600 650 655 660 655 600 650 655 660 655 650 650 655 66
  • Matlab 错误:()-索引必须出现在索引表达式的最后

    我有这段代码 想要在制表符分隔的 txt 文件中写入一个数组 fid fopen oo txt wt for x 1 length s fprintf fid s t n s x 1 end fclose fid 但我收到此错误 Error
  • 可以避免迭代元胞数组时的“s{1} 烦恼”吗?

    The s 1 标题的 烦恼 指的是下面的 for 块中的第一行 for s some cell array s s 1 unpeel the enclosing cell do stuff with s end This s s 1 业务
  • MATLAB 图形渲染:OpenGL 与 Painters?

    当谈到使用哪个渲染器来处理 MATLAB 图形或何时它很重要时 我一无所知 但我遇到过某些示例 其中does matter plot 0 0 ko markersize 50 linewidth 8 set gcf renderer ope
  • 从 3 个向量创建等值线图

    我正在尝试根据这些数据创建等高线图 pH D Tur 5 10 3 79 18918919 5 50 6 92 97297297 5 00 0 50 09009009 5 00 6 90 36036036 5 10 9 91 0810810
  • MATLAB:MEX 矩阵除法给出的结果与 m 文件不同

    我使用 MATLAB 的编码器工具创建了矩阵指数函数的 MEX 版本 以在另一组函数中使用 问题是 MEX 版本给出的结果与原始 m 文件不同 经过调试 我认为这是因为MEX文件和m文件没有做相同的矩阵除法 或者 MEX 文件首先就有问题
  • 如何在 MATLAB 的 for 循环中读取多个图像?

    我已将结果分段放在一个文件夹中 这些需要在 for 循环中读取并在循环中进一步处理 我尝试阅读如下 for i 1 10 file name dir strcat C Users adminp Desktop dinosaurs im im
  • 有没有办法在 MATLAB 中查看 pcode 文件 (.p) 的源代码?

    有没有办法在 MATLAB 中打开 pcode 文件 p 如果 开放 是指edit 那么当然不是 pcode 中的 p 代表 受保护 其主要设计目标是在保护其源代码的同时部署功能组件 如果 开放 是指run 那么当然是的 引用手册 http

随机推荐

  • 无法生成 DialogFlow v2 访问令牌

    在版本 1 中 这就是我与 DialogFlow Api 通信的方式 fetch configs baseUrl query v 20150910 body JSON stringify query text lang en session
  • 请解释一下这个 requestAnimationFrame 习语

    有很多地方 例如如何使用requestAnimationFrame 修复window requestAnimationFrame如下 我不明白为什么赋值的右侧被包装到函数调用中 window requestAnimFrame functio
  • 查找 Git 分支创建者

    我想知道是谁创建了一个分支 我可以通过以下方式做到这一点 git branch a xargs L 1 bash c echo 1 git log pretty format H an 1 1 但是 这会返回每个分支的最后一个提交者 而不一
  • 暂时停止表单事件的引发或处理?

    我的表单上有大量控件 并且在特定时间我想暂时停止处理所有事件 通常 如果我不想处理某些事件 我就会这样做 private bool myOpRunning false private void OpFunction myOpRunning
  • 如何缩放 SVG 图像以填充浏览器窗口?

    这看起来应该很容易 但我只是没有得到什么 我想要制作一个包含单个 SVG 图像的 HTML 页面 该图像会自动缩放以适合浏览器窗口 无需任何滚动 同时保留其纵横比 例如 目前我有一个 1024x768 SVG 图像 如果浏览器视口为 198
  • Google 在添加 Schema.org 标记时需要某些类型的某些属性吗?

    我尝试在我的网站上添加 Schema org 标记 类型为Article 然后在其上添加一些属性 当在Google结构化数据测试工具上检查时 它说需要某些属性 例如dataPublished author etc 我可以添加一些属性来满足要
  • 如何从 AngularJS 范围内的数组中删除项目?

    简单的待办事项列表 但列表页面上的每个项目都有一个删除按钮 相关模板 HTML tr td person name person id td td person description td td a href edit i class i
  • ASP.NET 5 Identity 3 用户在一段时间后注销

    我使用 RC1 位和外部 Google 身份验证 没有 Identity EntityFramework 在登录过程中 我设置了 记住我 标志 登录用户在浏览器重新启动 我看到 cookie 设置为 14 天后过期 和网站重新启动后仍然存在
  • 如何解决上下文中重新渲染过多的问题?

    每当我更新的时候user object in users array 在上下文中 所有使用的组件users重新渲染 我尝试过的 我有一个使用上下文中的值的组件 const DashboardCardList gt const context
  • MySQL - 从 PHP 插入日语 - 编码问题

    我正在尝试在 mysql 表中插入一些日语单词 如果我使用 phpMyAdmin 插入 则 phpMyAdmin 可以正常显示该单词 但如果我尝试通过 php 插入它 如下所示 mysql connect Host User Passwor
  • 使用xpath和java解析xml

    现在我想解析来自 webservice 的 xml 为了解析 我使用了xpath和java 我有以下代码 package test client import com sun org apache xpath internal NodeSe
  • 如何使用“api”或“implementation”指令从 gradle 插件获取依赖项

    背景 运行 Android Studio 3 0 beta7 并尝试获取一个适用于 Android 库的 javadoc 任务 事实上 这首先不能作为现成的任务提供 这真的很奇怪 我设法调整了一个根据我的需要回答不同的问题 最后得到这个代码
  • Pygame-创建更多 USEREVENT 类型事件的方法?

    这个问题是由于需要创建大量 USEREVENT 类型事件而产生的 由于我找不到有关如何创建超出限制的用户事件的信息 因此我来这里寻求帮助 目前我知道USEREVENT类型事件的值为24 最大允许的id为31 我还发现一些id s被保留 至少
  • 如何更改 Android Things 设备上的日期?

    我正在 Raspberry Pi 3 Model B 上使用 Android Things Developer Preview 有什么方法可以设置正确的日期 时间 时区 最简单的方法可能是使用date通过 ADB 执行 shell 命令 它
  • 检测何时按下标签栏项目

    我有一个根视图控制器 它没有设置为故事板上任何视图控制器的自定义类 相反 我的所有视图控制器都像这样子类化此类 RootViewController class RootViewController UIViewController UIT
  • Java中字符串结束符

    我正在解决一个简单的问题 在Java中删除字符数组中的某些字符 想法很简单 static void remove char char arr char c int r 0 for int i 0 i lt arr length i if a
  • 实时音频队列录音回放

    嘿伙计们 我正在尝试构建一个用于实时变声的应用程序 第一步 我设法将音频数据录制到指定文件并在录制后播放 现在我尝试更改在循环录制音频缓冲区后立即播放音频缓冲区的代码 我的问题是 如何直接从录音音频队列中读取音频数据 而不是 如文档中所示
  • 从 adb 获取包的可启动活动名称

    有没有办法从使用中获取包的可启动活动adb 对于未root的手机 即无需从中拉出apk data app目录并检查appt 我尝试了 dumpsys 但它不包含有关默认可启动活动的信息 Thanks 您不需要 root 即可从中提取 apk
  • 100% CPU 使用率下的 Java 线程优化

    我有一个应用程序 它接受队列上的工作 然后旋转该工作以在独立线程上完成 线程数量并不多 比如最多 100 个 但这些都是密集型任务 可以快速将 CPU 提升到 100 为了以最快的速度完成最多的工作 当我需要做更多的工作时 我最好只启动更多
  • 杀死在 Matlab 中创建的 Excel 进程

    鉴于我写入工作簿 目前我会终止所有 Excel 进程 以便我的代码在循环调用时可以正常工作 xlswrite path values system taskkill F IM EXCEL EXE 这使得我在处理另一个 Excel 文件时无法