CPF/CPF.ReoGrid/IO/CSVFileFormatProvider.cs

57 lines
1.5 KiB
C#
Raw Normal View History

2024-06-24 10:15:59 +08:00
using System;
using System.IO;
using System.Text;
namespace CPF.ReoGrid.IO
{
internal class CSVFileFormatProvider : IFileFormatProvider
{
public bool IsValidFormat(string file)
{
return Path.GetExtension(file).Equals(".csv", StringComparison.CurrentCultureIgnoreCase);
}
public bool IsValidFormat(Stream s)
{
throw new NotSupportedException();
}
public void Load(IWorkbook workbook, Stream stream, Encoding encoding, object arg)
{
bool autoSpread = true;
int bufferLines = 512;
RangePosition targetRange = RangePosition.EntireRange;
CSVFormatArgument csvformatArgument = arg as CSVFormatArgument;
bool flag = csvformatArgument != null;
if (flag)
{
autoSpread = csvformatArgument.AutoSpread;
bufferLines = csvformatArgument.BufferLines;
targetRange = csvformatArgument.TargetRange;
}
bool flag2 = workbook.Worksheets.Count == 0;
Worksheet worksheet;
if (flag2)
{
worksheet = workbook.CreateWorksheet("Sheet1");
workbook.Worksheets.Add(worksheet);
}
else
{
while (workbook.Worksheets.Count > 1)
{
workbook.Worksheets.RemoveAt(workbook.Worksheets.Count - 1);
}
worksheet = workbook.Worksheets[0];
worksheet.Reset();
}
CSVFormat.Read(stream, worksheet, targetRange, encoding, bufferLines, autoSpread);
}
public void Save(IWorkbook workbook, Stream stream, Encoding encoding, object arg)
{
throw new NotSupportedException("Saving entire workbook as CSV is not supported, use Worksheet.ExportAsCSV instead.");
}
}
}