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();
}
}
}