将excel文件合并到项目目录wpf c#

将excel文件合并到项目目录wpf c#,c#,wpf,excel,C#,Wpf,Excel,我有一些信息存储在excel文件中,我想从Wpf应用程序中读取它们。我可以通过以下方式读取此文件: foreach (var worksheet in Workbook.Worksheets("ExcelFile.xlsx") ) { for (int j = 1; j < 30; j++) { _Data.Add(new Data { FirstElement

我有一些信息存储在excel文件中,我想从Wpf应用程序中读取它们。我可以通过以下方式读取此文件:

foreach (var worksheet in Workbook.Worksheets("ExcelFile.xlsx") )
        {
            for (int j = 1; j < 30; j++)
            {
                _Data.Add(new Data
                {  FirstElement = worksheet.Rows[j].Cells[0].Text.ToString(), });
            }
        }
foreach(Workbook.Worksheets(“ExcelFile.xlsx”)中的var工作表)
{
对于(int j=1;j<30;j++)
{
_添加(新数据)
{FirstElement=工作表。行[j]。单元格[0]。文本。ToString(),});
}
}
其中ExcelFile.xlsx是保存在解决方案文件夹中并设置为合并资源的文件。 如果我直接从VisualStudio启动应用程序,它可以工作,但是如果我复制编译的.exe文件并将其发送给其他人,它就不能工作,因为xlsx文件丢失了

我的问题是:有没有办法将xlsx文件合并到.exe文件中,这样我就可以只共享.exe文件,一切正常? 为什么将ExcelFile.xlsx文件设置为“合并资源””没有像我想的那样工作


谢谢你的帮助

我通过将文件添加到项目中并将其构建操作属性更改为嵌入式资源来实现

然后,您可以将该文件显示为用户硬盘上的临时文件,如下所示:

// Create the template as a temporary file
string pathTemplate = Path.GetTempFileName();
Assembly assembly = Assembly.GetExecutingAssembly();
using (Stream input = assembly.GetManifestResourceStream("Vol_Report.Vol Report Template.xlsm")) // Note that it is Vol_Report because my namespace was Vol Report
using (Stream output = File.Create(pathTemplate))
{
    input.CopyTo(output);
}
然后像这样读取文件

app = new Excel.Application();
app.DisplayAlerts = false;
Excel.Workbooks books = app.Workbooks;
book = books.Open(pathTemplate);     
File.Delete(pathTemplate);
注意:上面的代码片段假定使用Excel=Microsoft.Office.Interop.Excel

最后,您可以像这样删除临时文件

app = new Excel.Application();
app.DisplayAlerts = false;
Excel.Workbooks books = app.Workbooks;
book = books.Open(pathTemplate);     
File.Delete(pathTemplate);
但是,我需要操作文件并写入文件。因为您只是从文件中读取,所以可能有一种更简单的方法。右键单击项目,选择“属性”,然后单击“资源”选项卡下的“添加资源->添加现有文件”,尝试将该文件添加为项目资源。然后你应该可以像这样访问你的文件

Workbook.Worksheets(Properties.Resources.ExcelFile)

谢谢你的回答。由于我必须只读取文件,我尝试了您的最后一个选项,但无法让它工作。使用Workbook.Worksheets(Properties.Resources.ExcelFile)时出错,因为我需要一个字符串作为Workbook.Worksheets的参数。。不管怎样,我通过读取txt文件而不是Excel文件解决了这个问题。这样比较容易。谢谢