c#中使用OleDbConnection在excel文档中导出图像的问题
本文关键字:图像 问题 文档 excel OleDbConnection | 更新日期: 2023-09-27 18:04:36
我想用c#导出一张图片到excel文档
图片格式如下:System.Windows.Media.Imaging.BitmapImage
以下是连接的详细信息:
private const string OleDbConnection = "provider=Microsoft.Jet.OLEDB.4.0;Data Source='{0}';Extended Properties=Excel 8.0;";
private const string OleDbInsert = "INSERT INTO [Report] ([Time], [Elapsed], [Description], [Picture]) values( @timestamp, @elapsed, @description, @pic);";
private const string OleDbCreate = "CREATE TABLE [Report] ([Time] varchar(255), [Elapsed] varchar(255), [Description] varchar(255), [pic] blob);";
我使用以下代码在excel中编写图像:
foreach (var e in Entries)
{
using(var command = new OleDbCommand { Connection = connection, CommandText = OleDbInsert })
{
command.Parameters.Add(new OleDbParameter("@component", OleDbType.BSTR) { Value = e.val1 });
command.Parameters.Add(new OleDbParameter("@result", OleDbType.BSTR) { Value = e.val2 });
command.Parameters.Add(new OleDbParameter("@description", OleDbType.BSTR) { Value = e.val3});
if (e.EncodedScreenshot != string.Empty)
{
byte[] imageContent = imageToByteArray(ImageWpfToGDI(e.Picture));
OleDbParameter ph = new OleDbParameter("@pic", OleDbType.Binary) { Value = imageContent};
ph.Size = imageContent.Length;
command.Parameters.Add(ph);
}
}
这些是我正在使用的方法:
public byte[] imageToByteArray(Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
private System.Drawing.Image ImageWpfToGDI(System.Windows.Media.Imaging.BitmapImage image)
{
MemoryStream ms = new MemoryStream();
var encoder = new System.Windows.Media.Imaging.BmpBitmapEncoder();
encoder.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(image as System.Windows.Media.Imaging.BitmapSource));
encoder.Save(ms);
ms.Flush();
return System.Drawing.Image.FromStream(ms);
}
所有数据导出到Excel文件,除了图像(肯定存在一个图像)。你能给我一些建议如何解决这个问题吗?我一直在网上搜索很多,但我仍然找不到解决方案。
我根据这个链接做了一些修改:从c#应用程序中插入和检索Access 2007 DB中的图像。我相信我的错误是由于图像数据类型。我应该为DB和OleDbParameter中的图像使用什么数据类型?
有人能帮我一下吗?如有任何回应,我将不胜感激。多谢!:)
以防有人碰到同样的问题…
我找不到使用OleDbParameter将图像导出到excel文件的方法。如果有人知道怎么做,请纠正我。
我使用了这种方法:http://csharp.net-informations.com/excel/csharp-insert-picture-excel.htm有了这个帮助:如何从c#应用程序插入图片到Excel ?而且效果非常好。