Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/MiniExcel/IExcelTemplate.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Threading;
using System.IO;
using System.Threading;
using System.Threading.Tasks;

namespace MiniExcelLibs
Expand All @@ -7,6 +8,7 @@ internal interface IExcelTemplate
{
void SaveAsByTemplate(string templatePath, object value);
void SaveAsByTemplate(byte[] templateBtyes, object value);
void SaveAsByTemplate(Stream templateStream, object value);
void MergeSameCells(string path);
void MergeSameCells(byte[] fileInBytes);
}
Expand All @@ -15,6 +17,7 @@ internal interface IExcelTemplateAsync : IExcelTemplate
{
Task SaveAsByTemplateAsync(string templatePath, object value, CancellationToken cancellationToken = default(CancellationToken));
Task SaveAsByTemplateAsync(byte[] templateBtyes, object value, CancellationToken cancellationToken = default(CancellationToken));
Task SaveAsByTemplateAsync(Stream templateStream, object value, CancellationToken cancellationToken = default(CancellationToken));
Task MergeSameCellsAsync(string path, CancellationToken cancellationToken = default(CancellationToken));
Task MergeSameCellsAsync(byte[] fileInBytes, CancellationToken cancellationToken = default(CancellationToken));
}
Expand Down
12 changes: 11 additions & 1 deletion src/MiniExcel/MiniExcel.Async.cs
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,8 @@ await Task.Run(() =>
}, cancellationToken);

return await tcs.Task;

}

public static async Task SaveAsByTemplateAsync(this Stream stream, string templatePath, object value, IConfiguration configuration = null, CancellationToken cancellationToken = default)
{
await ExcelTemplateFactory.GetProvider(stream, configuration).SaveAsByTemplateAsync(templatePath, value, cancellationToken).ConfigureAwait(false);
Expand All @@ -129,11 +129,21 @@ public static async Task SaveAsByTemplateAsync(this Stream stream, byte[] templa
await ExcelTemplateFactory.GetProvider(stream, configuration).SaveAsByTemplateAsync(templateBytes, value, cancellationToken).ConfigureAwait(false);
}

public static async Task SaveAsByTemplateAsync(this Stream stream, Stream templateStream, object value, IConfiguration configuration = null, CancellationToken cancellationToken = default)
{
await ExcelTemplateFactory.GetProvider(stream, configuration).SaveAsByTemplateAsync(templateStream, value, cancellationToken).ConfigureAwait(false);
}

public static async Task SaveAsByTemplateAsync(string path, string templatePath, object value, IConfiguration configuration = null, CancellationToken cancellationToken = default)
{
await Task.Run(() => SaveAsByTemplate(path, templatePath, value, configuration), cancellationToken).ConfigureAwait(false);
}

public static async Task SaveAsByTemplateAsync(string path, Stream templateStream, object value, IConfiguration configuration = null, CancellationToken cancellationToken = default)
{
await Task.Run(() => SaveAsByTemplate(path, templateStream, value, configuration), cancellationToken).ConfigureAwait(false);
}

public static async Task SaveAsByTemplateAsync(string path, byte[] templateBytes, object value, IConfiguration configuration = null, CancellationToken cancellationToken = default)
{
await Task.Run(() => SaveAsByTemplate(path, templateBytes, value, configuration), cancellationToken).ConfigureAwait(false);
Expand Down
11 changes: 11 additions & 0 deletions src/MiniExcel/MiniExcel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,12 @@ public static void SaveAsByTemplate(string path, string templatePath, object val
SaveAsByTemplate(stream, templatePath, value, configuration);
}

public static void SaveAsByTemplate(string path, Stream templateStream, object value, IConfiguration configuration = null)
{
using (var stream = File.Create(path))
SaveAsByTemplate(stream, templateStream, value, configuration);
}

public static void SaveAsByTemplate(string path, byte[] templateBytes, object value, IConfiguration configuration = null)
{
using (var stream = File.Create(path))
Expand All @@ -184,6 +190,11 @@ public static void SaveAsByTemplate(this Stream stream, string templatePath, obj
ExcelTemplateFactory.GetProvider(stream, configuration).SaveAsByTemplate(templatePath, value);
}

public static void SaveAsByTemplate(this Stream stream, Stream templateStream, object value, IConfiguration configuration = null)
{
ExcelTemplateFactory.GetProvider(stream, configuration).SaveAsByTemplate(templateStream, value);
}

public static void SaveAsByTemplate(this Stream stream, byte[] templateBytes, object value, IConfiguration configuration = null)
{
ExcelTemplateFactory.GetProvider(stream, configuration).SaveAsByTemplate(templateBytes, value);
Expand Down
2 changes: 1 addition & 1 deletion src/MiniExcel/MiniExcelLibs.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net45;netstandard2.0;net8.0;net9.0</TargetFrameworks>
<Version>1.41.3</Version>
<Version>1.41.4</Version>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
<LangVersion>8</LangVersion>
Expand Down
22 changes: 13 additions & 9 deletions src/MiniExcel/SaveByTemplate/ExcelOpenXmlTemplate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
using MiniExcelLibs.Zip;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Linq;
Expand Down Expand Up @@ -46,22 +45,22 @@ public ExcelOpenXmlTemplate(Stream stream, IConfiguration configuration, InputVa
public void SaveAsByTemplate(string templatePath, object value)
{
using (var stream = FileHelper.OpenSharedRead(templatePath))
SaveAsByTemplateImpl(stream, value);
SaveAsByTemplate(stream, value);
}

public void SaveAsByTemplate(byte[] templateBtyes, object value)
{
using (Stream stream = new MemoryStream(templateBtyes))
SaveAsByTemplateImpl(stream, value);
SaveAsByTemplate(stream, value);
}

internal void SaveAsByTemplateImpl(Stream templateStream, object value)
public void SaveAsByTemplate(Stream templateStream, object value)
{
//only support xlsx
//templateStream.CopyTo(_outputFileStream);

// foreach all templateStream and create file for _outputFileStream and not create sheet file
templateStream.Position = 0;
if (!templateStream.CanSeek)
throw new ArgumentException("The template stream must be seekable.");
templateStream.Seek(0, SeekOrigin.Begin);

var templateReader = new ExcelOpenXmlSheetReader(templateStream, null);
var outputFileArchive = new ExcelOpenXmlZip(_outputFileStream, mode: ZipArchiveMode.Create, true, Encoding.UTF8, isUpdateMode: false);
try
Expand Down Expand Up @@ -182,5 +181,10 @@ public Task SaveAsByTemplateAsync(byte[] templateBtyes, object value, Cancellati
{
return Task.Run(() => SaveAsByTemplate(templateBtyes, value), cancellationToken);
}

public Task SaveAsByTemplateAsync(Stream templateStream, object value, CancellationToken cancellationToken = default)
{
return Task.Run(() => SaveAsByTemplate(templateStream, value), cancellationToken);
}
}
}
Loading