簡體   English   中英

Visual Studio 2012:如何打開與項目關聯的Excel文件?

[英]Visual Studio 2012: How do I open an excel file that is associated with my project?

因此,我正在開發一個項目,該項目使用excel文件向用戶控件添加“說明”。截至目前,我的代碼使用絕對路徑打開excel文件,如下所示

Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\absolute path\filename.xlsx", Type.Missing, Type.Missing
                                                                 , Type.Missing, Type.Missing, Type.Missing, Type.Missing
                                                                 , Type.Missing, Type.Missing, Type.Missing, Type.Missing
                                                                 , Type.Missing, Type.Missing);

效果很好。

然后,我嘗試重命名該文件(只是為了確保未出於某些奇怪的原因打開C:\\文件)並將其添加到我的項目中,這樣我就不必依賴能夠訪問特定驅動器了(即文件可以打開,因為它與項目相關聯)。 然后,我嘗試了以下代碼:

Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"newfileName.xlsx", Type.Missing, Type.Missing
                                                                 , Type.Missing, Type.Missing, Type.Missing, Type.Missing
                                                                 , Type.Missing, Type.Missing, Type.Missing, Type.Missing
                                                                 , Type.Missing, Type.Missing);

這給了我這個:

“其他信息:找不到'newfileName.xlsx'。請檢查文件名的拼寫,並驗證文件位置是否正確。”

我想知道將excel文件添加到項目並使用相對路徑名打開它的正確方法是什么?

第二個示例嘗試在工作目錄中打開此文件。 因此,如果要在構建時復制此文件,只需將此文件的“復制到輸出目錄”屬性更改為“ true”

如果要將文件與項目關聯,則需要資源。 在這里,您可以了解如何向項目添加資源:

如何在.NET中創建和使用資源

資源是流。 它們存儲在內存中。 因此,我建議您使用需要Stream的類。 不是文件的路徑。

因為Workbooks.Open從文件的路徑創建Stream。 尋找直接使用流的重載或替代類更好。

var doc = SpreadSheetDocument.Open(Properties.Resources.YourFile , isEditable);

isEditable是布爾值。 您可以使用truefalse 如果將其設置為false,它將是只讀的。

我建議您看一下該主題以:

如何:從流中打開電子表格文檔(Open XML SDK)

任何方式如果您想使用當前類。 您必須將Stream臨時保存到Disk並從中獲取路徑。 它可以工作,但是還有很多工作要做,因為您可以直接使用Stream。

 string path = Path.GetTempPath(); // Creates a  Temp path for temporary file.
 Properties.Resources.Yourfile.Save(path); // Save the file into path.
 // Now you can use path to load file with xlApp.Workbooks.Open again!
 Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(path,...);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM