C#从流中打开并编辑.xls文件

C#从流中打开并编辑.xls文件,c#,excel,stream,C#,Excel,Stream,如何从流中打开.xls文件 using (MemoryStream ms = new MemoryStream()) using (CryptoStream sc = new CryptoStream(ms, new FromBase64Transform(FromBase64TransformMode.IgnoreWhiteSpaces), CryptoStreamMode.Write)) using (StreamWriter sw = new StreamWriter(cs)) {

如何从流中打开
.xls
文件

using (MemoryStream ms = new MemoryStream())
using (CryptoStream sc = new CryptoStream(ms, new FromBase64Transform(FromBase64TransformMode.IgnoreWhiteSpaces), CryptoStreamMode.Write))
using (StreamWriter sw = new StreamWriter(cs))
{
    sw.Write(base64String);
    sw.Flush;
}
我正在尝试使用Microsoft.Office.Interop,但看起来像它的
Excel.Application().Workbook.Open
方法只是启动
Excel
应用程序。

通过名为的库,您可以通过以下方式达到此目的:

using (var package = new ExcelPackage(stream))
{
    var currentSheet = package.Workbook.Worksheets;
    var workSheet = currentSheet.First();
    workSheet.Cells[1,1].Value = "Text in first row and first column"; // EPPlus index of columns and rows are from 1 not 0

    using(var memStream = new MemoryStream())
    {
        package.SaveAs(memStream);

        using(var fileStream = File.Create("path"))
        {
                byte[] buffer = new byte[1024];
            int bytesRead;
            do
            {
                bytesRead = memStream.Read(buffer, 0, buffer.Length);
                fileStream.Write(buffer, 0, bytesRead);
            } while (bytesRead > 0);
        }
    }
}

要从流中读取,您可以使用包:

使用ExcelDataReader;
使用(MemoryStream ms=new MemoryStream())
使用(加密流sc=新加密流(ms,新
FromBase64Transform(FromBase64TransformMode.IgnoreWhiteSpaces),CryptoStreamMode.Write)
使用(StreamWriter sw=新StreamWriter(cs))
{
sw.Write(base64String);
西南齐平;
使用(IExcelDataReader=ExcelReaderFactory.CreateBaryReader(ms))
{
while(er.Read())
{
对于(int i=0;i

然后,您可能需要另外安装软件包。

Ohh。对不起。然而,我认为它看起来非常类似于另一个库。
using ExcelDataReader;

using (MemoryStream ms = new MemoryStream())
using (CryptoStream sc = new CryptoStream(ms, new 
FromBase64Transform(FromBase64TransformMode.IgnoreWhiteSpaces), CryptoStreamMode.Write))
using (StreamWriter sw = new StreamWriter(cs))
{
    sw.Write(base64String);
    sw.Flush;

    using (IExcelDataReader er = ExcelReaderFactory.CreateBinaryReader(ms))
    {
        while(er.Read())
        {
            for (int i = 0; i < er.FieldCount; i++)
                Console.Write(er.GetValue(i) + " ");
            Console.WriteLine();
        }
    }
}