2014-04-18 6 views
0

나는 Excel.Xlsm 파일을 zip 처리하는 방법을 알아 내려고 노력해 왔습니다. 다음 코드는 zip 파일을 만들지 만 .xlsm 파일을 보내는 방법을 알 수는 없습니다. 어떤 도움을 주셔서 감사합니다!Excel 파일을 압축하는 방법은 무엇입니까?

Dim zipPath As String = RegScoringWorkbookName.Replace(".xlsm", ".zip") 'create zip file from .xlsm file 
Try 
    If File.Exists(zipPath) Then 
    My.Computer.FileSystem.DeleteFile(zipPath, FileIO.UIOption.OnlyErrorDialogs, 
         FileIO.RecycleOption.DeletePermanently) 
    End If 
    Dim FilePath As String = RegScoringWorkbookName 'path of .xlsm file 
    Using FileStream = New FileStream(zipPath, FileMode.CreateNew) 
     Using archive = New ZipArchive(FileStream, ZipArchiveMode.Create, True) 
      Dim zipArchiveEntry = archive.CreateEntry(GetFileName(FilePath), CompressionLevel.Optimal) 
      Using zipStream = zipArchiveEntry.Open() 
       ' zipStream.WriteAsync() 
       zipStream.Close() 
      End Using 
     End Using 
    End Using 
Catch ex As Exception 

End Try 
+2

이것은 Excel 파일과 어떤 관련이 있습니까? –

답변

0

정확한 예제가 있으므로 여기에 MSDN 코드를 인용 해드립니다. http://msdn.microsoft.com/de-de/library/vstudio/system.io.compression.ziparchive

Imports System.IO 
Imports System.IO.Compression 

Module Module1 

Sub Main() 
    Dim zipPath As String = "c:\users\exampleuser\end.zip" 
    Dim extractPath As String = "c:\users\exampleuser\extract" 
    Dim newFile As String = "c:\users\exampleuser\NewFile.txt" 

    Using archive As ZipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Create) 'Changed this to create from MSDN 
     archive.CreateEntryFromFile(newFile, "NewEntry.txt", CompressionLevel.Fastest) 
    End Using 
End Sub 

End Module 

꽤 자기 설명해야한다. 이 시점에서 파일 스트림을 사용할 필요가 없습니다. 기존 파일을 압축 할 수있는 미리 준비된 방법이 있습니다 (CreateEntryFromFile).

+0

이것은 Jens의 속임수였습니다. 검색해 본 적이 없으며 msdn 예를 발견하지 못했습니다. – JoeB

관련 문제