在我的Crystal Report中,我需要添加特定文件夹路径中的页眉图像,因为我在下面的代码中完成了
private void AddImage_ProdfailReport()
{
try
{
// here i have define a simple datatable inwhich image will recide
DataTable dt = new DataTable();
// object of data row
DataRow drow;
// add the column in table to store the image of Byte array type
dt.Columns.Add("Image", System.Type.GetType("System.Byte[]"));
drow = dt.NewRow();
// define the filestream object to read the image
FileStream fs;
// define te binary reader to read the bytes of image
BinaryReader br;
// check the existance of image
if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + "Footer.Jpg"))
{
// open image in file stream
fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "Footer.Jpg", FileMode.Open);
}
else
{
// if phot does not exist show the nophoto.jpg file
fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "Footer.jpg", FileMode.Open);
}
// initialise the binary reader from file streamobject
br = new BinaryReader(fs);
// define the byte array of filelength
byte[] imgbyte = new byte[fs.Length + 1];
// read the bytes from the binary reader
imgbyte = br.ReadBytes(Convert.ToInt32((fs.Length)));
drow[0] = imgbyte;
// add the image in bytearray
dt.Rows.Add(drow);
// add row into the datatable
br.Close();
// close the binary reader
fs.Close();
// close the file stream
CreRe_ProdFail rptobj = new CreRe_ProdFail();
// object of crystal report
rptobj.SetDataSource(dt);
// set the datasource of crystalreport object
crv1.ReportSource = rptobj;
//set the report source
}
catch (Exception ex)
{
// error handling
MessageBox.Show("Missing Footer.jpg in application folder");
}
// run the application to view image in report
}
我在数据集的数据表中创建了一个字段 将DataType更改为System.Byte()
然后我将此字段拖到报告中 但它的显示错误“此字段名称未知”,而打开报告.. 我没有得到什么是问题 请帮帮我。
答案 0 :(得分:0)
试试这种方式
首先,将图形作为占位符添加到您希望其显示的报表中。
然后,右键单击图形 - > '格式化图形' - > '图片'标签 - >添加公式
'图形位置'构建您的路径字符串。
类似于' C:\我的文件夹\' + {table.Clgid} +' .jpg'应该工作。
如果您的更高版本,那么,
报告标题RightClick => INSERT => OLE对象=>创建新的绘图
右键单击ON对象=>选择图片标签=>在图形位置
下设置位置公式答案 1 :(得分:0)
我做到了; 我正在尝试从数据库和图像从本地路径添加数据并在Crystal报表中显示;我是通过以下代码完成的:
首先:我在数据集的数据表中创建了一个新列(" Image"),并将DataType更改为System.Byte()
第二步:将此图像拖放到我想要的位置。
private void LoadReport()
{
frmCheckWeigher rpt = new frmCheckWeigher();
CryRe_DailyBatch report = new CryRe_DailyBatch();
DataSet1TableAdapters.DataTable_DailyBatch1TableAdapter ta = new CheckWeigherReportViewer.DataSet1TableAdapters.DataTable_DailyBatch1TableAdapter();
DataSet1.DataTable_DailyBatch1DataTable table = ta.GetData(clsLogs.strStartDate_rpt, clsLogs.strBatchno_Rpt, clsLogs.cmdeviceid); // Data from Database
DataTable dt = GetImageRow(table, "Footer.Jpg");
report.SetDataSource(dt);
crv1.ReportSource = report;
crv1.Refresh();
}
//通过此函数,我将My Image数据合并到dataTable
private DataTable GetImageRow(DataTable dt, string ImageName)
{
try
{
FileStream fs;
BinaryReader br;
if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + ImageName))
{
fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + ImageName, FileMode.Open);
}
else
{
// if photo does not exist show the nophoto.jpg file
fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + ImageName, FileMode.Open);
}
// initialise the binary reader from file streamobject
br = new BinaryReader(fs);
// define the byte array of filelength
byte[] imgbyte = new byte[fs.Length + 1];
// read the bytes from the binary reader
imgbyte = br.ReadBytes(Convert.ToInt32((fs.Length)));
dt.Rows[0]["Image"] = imgbyte;
br.Close();
// close the binary reader
fs.Close();
// close the file stream
}
catch (Exception ex)
{
// error handling
MessageBox.Show("Missing " + ImageName + "or nophoto.jpg in application folder");
}
return dt;
// Return Datatable After Image Row Insertion
}