You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Excel文件嵌入Visual C#项目,无需依赖固定目录?

解决方案:将Excel模板嵌入项目并通过项目路径访问

步骤1:把Excel模板加入Visual Studio项目

右键你的项目 → 选择「添加」→「现有项」,选中自制的Excel模板文件,添加到项目中。

步骤2:设置模板文件的属性

选中项目里的模板文件,在右侧属性窗口修改:

  • 生成操作:选择「内容」
  • 复制到输出目录:选择「始终复制」
    (如果不想让模板文件单独暴露,也可以选「嵌入的资源」,后续代码需要额外处理提取,下面会讲两种实现方式)

步骤3:通过项目/程序路径打开模板

方式一:复制到输出目录(简单直接)

直接获取程序运行的目录,拼接模板文件名即可,完全适配不同设备的U盘路径差异:

using System.IO;
using System.Reflection;

// 获取当前程序的运行目录(exe所在文件夹)
string appDirectory = AppDomain.CurrentDomain.BaseDirectory;
// 拼接模板文件路径,替换成你的模板实际文件名
string templateFilePath = Path.Combine(appDirectory, "你的模板文件名.xlsx");

// 打开工作簿
oWB = (Excel._Workbook)(oXL.Workbooks.Open(templateFilePath));
oSheet = (Excel._Worksheet)oWB.ActiveSheet;

方式二:嵌入资源(打包进程序,无单独文件)

如果要把模板打包进程序集,避免用户看到单独的模板文件,需要先把嵌入的资源提取到临时文件再打开:

using System.IO;
using System.Reflection;

// 获取嵌入的资源流,格式是「项目命名空间.模板文件名」,比如项目叫ExcelTool,模板是Template.xlsx,就是ExcelTool.Template.xlsx
Stream resourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("你的项目命名空间.你的模板文件名.xlsx");
// 创建临时文件保存模板
string tempFilePath = Path.GetTempFileName() + ".xlsx";

using (FileStream fileStream = new FileStream(tempFilePath, FileMode.Create))
{
    resourceStream.CopyTo(fileStream);
}

// 打开临时模板文件
oWB = (Excel._Workbook)(oXL.Workbooks.Open(tempFilePath));
oSheet = (Excel._Worksheet)oWB.ActiveSheet;

// 提示:用户保存生成的文件后,可以删除临时文件,避免占用空间
// File.Delete(tempFilePath);

补充说明

  • 复制到输出目录的方式更适合开发调试,模板文件会和exe一起出现在输出文件夹,换设备开发时,只要项目结构不变,编译后路径会自动适配。
  • 嵌入资源的方式适合最终分发场景,用户看不到单独的模板文件,但每次运行都要提取临时文件,会有轻微的性能开销。

内容的提问来源于stack exchange,提问作者EJW_DBT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:38:15