我想将Excel文件压缩为.zip或.cap扩展名。代码用于执行此操作,它正在压缩文件,但该zip文件无法解压缩。解压缩,我得到错误文件文件已损坏或无法解压缩。 我正在使用的代码:
static public bool CompressFile(string file, string outputFile)
{
try
{
using (var inFile = File.OpenRead(file))
{
using (var outFile = File.Create(outputFile))
{
using (var compress = new GZipStream(outFile, CompressionMode.Compress, false))
{
byte[] buffer = new byte[inFile.Length];
int read = inFile.Read(buffer, 0, buffer.Length);
while (read > 0)
{
compress.Write(buffer, 0, read);
read = inFile.Read(buffer, 0, buffer.Length);
}
}
}
}
return true;
}
catch (IOException ex)
{
MessageBox.Show(string.Format("Error compressing file: {0}", ex.Message));
return false;
}
}
即使我找一些链接来获得正确的解决方案。但没有什么是锻炼。我需要一些建议来获得适当的解决方案。有任何答案。
答案 0 :(得分:0)
此代码使用SharpZipLib库并将压缩可以解压缩的文件
private void Zip()
{
string output = @"C:\TEMP\test.zip";
string input = @"C:\TEMP\test.xlsx";
using (var zipStream = new ZipOutputStream(System.IO.File.Create(output)))
{
zipStream.SetLevel(9);
var buffer = new byte[4096];
var entry = new ZipEntry(Path.GetFileName(input));
zipStream.PutNextEntry(entry);
using (FileStream fs = System.IO.File.OpenRead(input))
{
int sourceBytes;
do
{
sourceBytes = fs.Read(buffer, 0, buffer.Length);
zipStream.Write(buffer, 0, sourceBytes);
} while (sourceBytes > 0);
}
zipStream.Finish();
zipStream.Close();
}
}