我有一個Excel 2007電子表格,我用OpenXML SDK 2編輯。 我刪除了一些行等。 我想知道如何將該Spreadsheetdocument保存到另一個文件名。openxml spreadsheat保存爲
12
A
回答
12
據我所知,沒有內置的方法來改變文件名,但由於編輯文件的一種方式是使用流,你可以在寫出流的內容時輕鬆地給出所需文件的名稱:
byte[] byteArray = File.ReadAllBytes("C:\\temp\\oldName.xltx");
using (MemoryStream stream = new MemoryStream())
{
stream.Write(byteArray, 0, (int)byteArray.Length);
using (SpreadsheetDocument spreadsheetDoc = SpreadsheetDocument.Open(stream, true))
{
// Do work here
}
File.WriteAllBytes("C:\\temp\\newName.xlsx", stream.ToArray());
}
還有其他的方法來更改名稱爲好,返回文件在ASP.NET MVC Web應用程序的用戶時,喜歡,但是這取決於你正在嘗試做的。
8
看一看這個庫ClosedXML這是基於的OpenXML;它簡化了大量文檔操作併爲您提供了方法。 下面是你可以做的一個例子。
var workbook = new XLWorkbook();
var worksheet = workbook.Worksheets.Add("Sample Sheet");
worksheet.Cell("A1").Value = "Hello World!";
workbook.SaveAs("HelloWorld.xlsx");
+2
我想繼續使用OpenXML,但在嘗試瞭解如何打開現有的Excel模板,填充一些信息並將其推送到瀏覽器2小時後,我嘗試了ClosedXML。我已經用ClosedXML在3分鐘內完成了它。這是非常容易的,我不得不說。 – Quan 2017-04-10 20:56:29
4
我強烈建議ClosedXML - 只是用它的第一次,最初我做了使用標準的Open XML 2.0 SDK在幾個小時的「從Excel導入」功能 - 我重寫它在不到15分鐘,而且我已經使用這個工具在10分鐘內完成了excel的導出。
1
這是我的一個保存爲解決方案,與具有宏和條件格式等(此方法是在具有SpreadsheetDocument財產「文檔」的包裝)複雜的工作簿測試:
/// <summary>
/// Saves as.
/// </summary>
/// <param name="fileName">Name of the file.</param>
public void SaveAs(String filename)
{
String dir = filename.Replace(System.IO.Path.GetFileName(filename), String.Empty);
if (!System.IO.Directory.Exists(dir))
System.IO.Directory.CreateDirectory(dir);
SpreadsheetDocument newDoc = SpreadsheetDocument.Create(filename, Document.DocumentType);
//Make sure it's clear
newDoc.DeleteParts<OpenXmlPart>(newDoc.GetPartsOfType<OpenXmlPart>());
//Copy all parts into the new book
foreach (OpenXmlPart part in Document.GetPartsOfType<OpenXmlPart>())
{
OpenXmlPart newPart = newDoc.AddPart<OpenXmlPart>(part);
}
//Perform 'save as'
newDoc.WorkbookPart.Workbook.Save();
newDoc.Close();
this.Document.Close();
//Open new doc
this.Document = SpreadsheetDocument.Open(filename, true);
}
相關問題
- 1. 保存和自動保存PowerPoint OpenXML PresentationDocuments
- 2. OpenXML庫保存excel文件
- 3. OpenXML SDK保存.xlsx文件丟失
- 4. OpenXML內存泄漏
- 5. OpenXML - Cell.DateType爲空
- 6. 將Open XML保存爲PDF
- 7. 以編程方式保存OpenXml文檔爲以前的版本(Word 2007)
- 8. 的OpenXML EmbeddedPackagePart和緩存
- 9. 可以在不調用Close()的情況下保存OpenXML Spreadsheet?
- 10. 保存OpenXML文檔時操作共享字符串表
- 11. 提示用戶在openXML中保存或打開
- 12. 使用OpenXML&MemoryStream在ASP.NET程序中編輯和保存.docx
- 13. c#OpenXML搜索並替換文本不保存
- 14. 保存從模板生成的OpenXML文檔(Word)
- 15. Openxml - 以標準格式保存非標準xlsx
- 16. 流的OpenXML導致
- 17. OpenXML - 保護所有工作表
- 18. 如何使用OPENXML
- 19. .NET OpenXML SDK 2 RunProperties爲空
- 20. OpenXml:將XElement轉換爲OpenXmlElement
- 21. Worksheet.CustomProperites OpenXML
- 22. OpenXml ChangeDocumentType
- 23. HexBinaryValue.FromString OPENXML
- 24. OpenXML WordProcessingDocument到base64
- 25. 保存之前不會保存爲
- 26. 如何保存而不保存爲
- 27. SQL + Openxml +如何存儲NVARCHAR數據
- 28. 選擇從OPENXML SQL存儲過程
- 29. OpenXML的:閱讀使用OpenXML的SDK
- 30. 保存即使在取消時也保存「保存爲PDF」
此代碼似乎並不正確。在傳遞給SpreadsheetDocument.Open'調用之前,你需要'stream.Seek(0,SeekOrigin.Begin)'嗎?否則,公開呼叫將收到一個空的流,因爲它在流的末尾。 – 2015-10-01 03:59:56
大概有一個內部呼叫尋求0,因爲代碼爲我工作原樣。 – 2015-10-05 17:59:36