问题
In my Crystal Report I need To add Header Image from specific Folder Path, for that I done Below Code
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
}
I created a field in a datatable of the dataset and change the DataType to System.Byte()
Then I drag this field to the report But its Showing An Error "This Field name is not known" , while Opening Report.. I am not getting what is Problem Please help me in it.
回答1:
Try this way
First, add a graphic as a placeholder into your report where you want it to display.
Then, right-click the graphic -> 'Format Graphic' -> 'Picture' tab -> Add a formula
under 'Graphic Location' that builds your path string.
Something like 'C:\My Folder\' + {table.Clgid} + '.jpg' should work.
If your Higher version then,
Report Header RightClick => INSERT => OLE Object => CREATE NEW as Drawing
After Right Click ON object => select Picture tab => set Location formula under Graphic Location
回答2:
I done It; I am trying to add Data from Database And Image From Local Path and show in Crystal report; I done it by below code:
First: I created a New Column ("Image") in a datatable of the dataset and change the DataType to System.Byte()
Second : Drag And drop this image Filed Where I want.
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();
}
// By this Function I merge My Image data into 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
}
来源:https://stackoverflow.com/questions/23993639/error-while-add-image-dynamically-from-local-path-in-crystal-report