c#使用嵌入式资源中的excel文件
我正在为我的女朋友编写一个评分程序,我一直在尝试将数据输出到一个excel文件中,我将该文件嵌入到该程序中。我有它写到一个空白的excel文件目前,但想使用一个预先制作的excel文件,只是将数据导出到适当的单元格。我不知道如何告诉程序使用资源文件夹中的xls文件,而不是生成一个空白的excel文件。以下是迄今为止保存它的代码。我用的是C#2008速成版 谢谢 我的重新来源参考是:Properties.Resources.gradesheetc#使用嵌入式资源中的excel文件,c#,C#,我正在为我的女朋友编写一个评分程序,我一直在尝试将数据输出到一个excel文件中,我将该文件嵌入到该程序中。我有它写到一个空白的excel文件目前,但想使用一个预先制作的excel文件,只是将数据导出到适当的单元格。我不知道如何告诉程序使用资源文件夹中的xls文件,而不是生成一个空白的excel文件。以下是迄今为止保存它的代码。我用的是C#2008速成版 谢谢 我的重新来源参考是:Properties.Resources.gradesheet Excel.Application xlApp;
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
//add data to excel
xlWorkSheet.Cells[1, 1] = firstName;
xlWorkSheet.Cells[2, 1] = lastName;
xlWorkBook.Close(true, misValue, misValue);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
您需要从资源中获取excel文件并将其保存到文件中。然后,您可以在工作簿上执行打开操作:
xlApp.Workbooks.Open(fileName);
正如John Koerner所说,Excel可以处理文件,所以您需要先将Excel文件保存到文件中 但是,如果您可以使用.XLSX而不是.XLS,那么最好使用Interop而不是Interop来创建Excel文件。它更简单,并且没有Interop所遇到的所有问题 根据您希望对Excel文件执行的操作以及如何使用它,场景略有不同。你可以:
- 将流直接传递给支持流作为参数的对象。例如,支持直接从任何流读取excel文件,并可以将对象加载到内存中。然后,您可以操纵该对象并将其写入调用Save方法的文件,传递
或filestream
filename
- 通过创建具有正确目标文件名的可写Filestream对象(使用file.OpenWrite),然后调用yourManifestResourceStream.CopyTo(yourFileStream),将流保存到(临时)文件中。然后,您可以将
传递给另一个进程(如Excel)并从文件系统中打开它李>文件名
public static Stream GetResourceFileStream(string fileName)
{
Assembly currentAssembly = Assembly.GetExecutingAssembly();
// Get all embedded resources
string[] arrResources = currentAssembly.GetManifestResourceNames();
foreach (string resourceName in arrResources)
{
if (resourceName.Contains(fileName))
{
return currentAssembly.GetManifestResourceStream(resourceName);
}
}
return null;
}
然后,您可以使用流或将流保存到文件:。您可以创建Excel模板文件(
.xlt
),然后基于该模板打开新的.xls
文件。您好,AB这应该能帮您解决问题。(在.NET 4.5中测试)
谢谢你的回复,所以绝对没有办法告诉c#使用我的资源中的excel文件作为模板使用,而不首先保存文件?不,excel可以处理文件,所以它需要一个基础文件。您唯一的其他选择是使用excel automation以编程方式创建文件中的所有内容。这并不难,但将文件保存到临时位置并从那里开始工作可能更容易。
public void openExcelTemplateFromResources ()
{
string tempPath = System.IO.Path.GetTempFileName();
System.IO.File.WriteAllBytes(tempPath, Properties.Resources.excelResource);
Excel.Application excelApplication = new Excel.Application();
Excel._Workbook excelWorkbook;
excelWorkbook = excelApplication.Workbooks.Open(tempPath)
excelApplication.Visible = true; // at this point its up to the user to save the file
}