c# - C# 直接从流中打开和编辑 .xls 文件
问题描述
如何.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().Workbooks.Open
方法只是启动Excel
应用程序。
解决方案
从流中读取您可以使用ExcelDataReader包:
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();
}
}
}
然后,您可能需要另外安装ExcelDataReader.DataSet包。
推荐阅读
- python - 正则表达式检查字符串是否符合某些条件
- c# - 如何从 c# 进行 mysql 查询并将其保存在变量中?
- dart - Dart 中的 HttpServer 流返回什么样的错误
- reactjs - 使用 Reducer 更新数据库
- c++ - 理解递归背包
- matlab - 我的 for 循环的 Matlab 代码中有一些错误。我想问是否有人知道错误在哪里
- excel - 跨多个工作表删除表中的空行
- java - 在Java中将日期格式“EEE MMM dd HH:mm:ss zzzz yyyy”转换为“yyyy-MM-dd'T'HH:mm:ss”
- powershell - `foreach` 集合表达式中的`Write-Output`
- python - 如何读取这个输入?尝试使用 sys.stdin.readline()