57 lines
1.5 KiB
C#
57 lines
1.5 KiB
C#
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.");
|
|
}
|
|
}
|
|
}
|