openxml 스프레드쉬트 다른 이름으로 저장
OpenXML SDK 2로 편집하는 Excel 2007 스프레드시트가 있습니다.행 등을 몇 개 제거합니다.스프레드시트 문서를 다른 파일 이름으로 저장하는 방법을 알고 싶습니다.
내가 알기로는 파일 이름을 변경할 수 있는 내장된 방법은 없지만 파일을 편집하는 한 가지 방법은 스트림을 사용하는 것이기 때문에 스트림 내용을 쓸 때 원하는 파일 이름을 쉽게 지정할 수 있습니다.
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 웹 응용 프로그램에서 사용자에게 파일을 반환하는 경우와 같이 이름을 변경하는 다른 방법도 있지만, 이 방법은 사용자가 무엇을 하려고 하는지에 따라 다릅니다.
이 라이브러리 ClosedX 보기OpenXML을 기반으로 하는 ML은 많은 문서 작업을 단순화하고 다른 이름으로 저장 방법을 제공합니다.여기 당신이 할 수 있는 일의 예가 있습니다.
var workbook = new XLWorkbook();
var worksheet = workbook.Worksheets.Add("Sample Sheet");
worksheet.Cell("A1").Value = "Hello World!";
workbook.SaveAs("HelloWorld.xlsx");
ClosedXML을 강력하게 추천합니다. 처음에는 처음 사용했고 처음에는 표준 OpenXML 2.0 SDK를 사용하여 "Excel에서 가져오기" 기능을 몇 시간 만에 수행했습니다. 15분도 안 되어 다시 작성했고 이 도구를 사용하여 10분 내에 내보내기도 완료했습니다.
스프레드시트 문서를 다른 파일 이름으로 저장한 후 열어 편집할 수 있습니다.
string sourceFile = "C:\Users\***.xlsx";
string destFile = "C:\Users\*****.xlsx";
System.IO.File.Copy(sourceFile, destFile, true);
using (SpreadsheetDocument spreadsheetDoc = SpreadsheetDocument.Open(destFile, true))
{
//remove some rows etc
//save workbookpart
}
참조:방법: 파일 및 폴더 복사, 삭제 및 이동(C# 프로그래밍 가이드)
다음은 매크로와 조건부 서식 등이 있는 복잡한 워크북으로 테스트한 저장 방법입니다(이 방법은 스프레드시트 문서 속성 "Document"가 있는 래퍼에 있습니다).
/// <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);
}
이 기능이 어떤 버전으로 도입되었는지는 모르지만, 어디에서 사용하는지는
SpreadsheetDocument
의 하위 클래스입니다.OpenXmlPackage
.
이 함수는 새 문서를 반환하므로 복사된 문서로 전환하고 변경사항을 적용할 수 있습니다.
void FromTemplate()
{
using var template = SpreadsheetDocument.Open("Template.xlsx", isEditable: true);
using var output = (SpreadsheetDocument)template.SaveAs(path);
//no longer need to keep handle open
template.Dispose();
//apply your changes to package
}
언급URL : https://stackoverflow.com/questions/5203150/openxml-spreadsheat-save-as
'sourcecode' 카테고리의 다른 글
파이썬에서 동적 콘텐츠(자바스크립트로 작성)로 페이지를 스크랩하려면 어떻게 해야 합니까? (0) | 2023.07.18 |
---|---|
Admob 광고와 Firebase 광고의 차이점 (0) | 2023.07.18 |
탭을 사용하지 않고 주피터 노트북에서 자동 완성하는 방법은 무엇입니까? (0) | 2023.07.18 |
클래스가 하위 분류될 때 코드를 실행하는 방법은 무엇입니까? (0) | 2023.07.18 |
세션 상태가 세션 ID를 생성했지만 응답이 응용 프로그램에 의해 이미 플러시되었기 때문에 저장할 수 없습니다."를 발생시키는 원인 (0) | 2023.07.18 |