C# 将二进制文件写入.Xlsx
您好,我有下面这个类,我正在使用它从SQLServer下载Excel文件,在WPF中使用Linq to sql。我很难让这个方法发挥作用C# 将二进制文件写入.Xlsx,c#,lambda,C#,Lambda,您好,我有下面这个类,我正在使用它从SQLServer下载Excel文件,在WPF中使用Linq to sql。我很难让这个方法发挥作用 public class Tables { public Guid Id { get; set; } public byte[] Data { get; set; } public string Notes{ get; set; }
public class Tables
{
public Guid Id { get; set; }
public byte[] Data { get; set; }
public string Notes{ get; set; }
}
财产
public ObservableCollection<Tables> Table
{
get
{
return mTables;
}
}
您收到错误是因为
fileBytes
仅存在于传递给ForEach的委托中。试试这个:
private void executeSaveAttachment(object parameter)
{
using (var dlg = new SaveFileDialog())
{
foreach (var table in Table)
{
if (dlg.ShowDialog() ?? false)
{
File.WriteAllBytes(dlg.FileName, table.Data)
}
}
}
}
用于WPF
private void executeSaveAttachment(object parameter)
{
SaveFileDialog dlg = new SaveFileDialog();
{
foreach (var table in Table)
{
if (dlg.ShowDialog() ?? false)
{
File.WriteAllBytes(dlg.FileName, table.Data);
}
}
}
}
您的
fileBytes
数组是在循环中初始化的,因此它在下面的if
语句的上下文中不可用。“Microsoft.Win32.SaveFileDialog”:using语句中使用的类型必须隐式转换为“System.IDisposable”。在.NET framework中有3个SaveFileDialog类:一个用于WinForms(System.Windows.Forms.SaveFileDialog),一个用于WPF(System.Windows.Controls.SaveFileDialog),另一个用于Microsoft.Win32命名空间(不确定最后一个用于什么)。如果您使用的是WinForms,请使用第一个,它是一次性的,因此请使用using关键字。如果您使用的是其他任何一个,它们都不是一次性的,您可以删除using关键字。
private void executeSaveAttachment(object parameter)
{
SaveFileDialog dlg = new SaveFileDialog();
{
foreach (var table in Table)
{
if (dlg.ShowDialog() ?? false)
{
File.WriteAllBytes(dlg.FileName, table.Data);
}
}
}
}