我有一个带有一些图像的数据表,我试图将该数据表导出为excel或word,下面的代码它不导出图像,如何导出数据与图像?
Response.Clear();
Response.Buffer = true;
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.docx");
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.Charset = "";
Response.ContentType = "application/ms-word ";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
string str1 = string.Empty;
foreach (DataColumn dtcol in dt2.Columns)
{
Response.Write(str1 + dtcol.ColumnName);
str1 = "\t";
}
Response.Write("\n");
foreach (DataRow dr1 in dt2.Rows)
{
str1 = "";
for (int j = 0; j < dt2.Columns.Count; j++)
{
Response.Write(str1 + Convert.ToString(dr1[j]));
str1 = "\t";
}
Response.Write("\n");
}
Response.ContentEncoding = System.Text.Encoding.Unicode;
Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
答案 0 :(得分:0)
这里我提供了将数据表导出到excel的示例代码。在导出后还附加了excel看起来像这样的图像。
使用以下DLL执行代码。 1. ClosedXML.dll 2. WindowsCore.dll 3. DocumentFormat.OpenXML.dll 4. PresentationCore.dll
代码示例:
try
{
DataTable dt = new DataTable();
dt.Columns.Add("Subject");
dt.Columns.Add("Category");
dt.Columns.Add("CPT");
dt.Columns.Add("Modifier");
dt.Columns.Add("Dx");
dt.Columns.Add("GuideLine");
dt.Columns.Add("Insurance");
dt.Columns.Add("FilePath");
string path = Server.MapPath("Image/stock-illustration-1977033-dandelion-in-the-wind.jpg");
dt.Rows.Add("Billing Steps", "Billing", "NA", "NA", "Billing Steps is very easy", "NA", "NA", path);
dt.Rows.Add("Billing Steps", "Billing", "NA", "NA", "Billing Steps is very easy", "NA", "NA", "");
dt.AcceptChanges();
using (XLWorkbook wb = new XLWorkbook())
{
string WorkSheetName = "Sheet1";
IXLWorksheet WorkSheet = wb.Worksheets.Add(dt, WorkSheetName);
Bitmap Image = null;
long ImgHeight = 100;
long ImgWidth = 100;
for (int i = 0; i < dt.Rows.Count; i++)
{
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(Convert.ToString(dt.Rows[i]["FilePath"]));
if (bitmap != null)
{
var stream = new System.IO.MemoryStream();
bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Gif);
if (stream != null)
{
stream.Position = 0;
XLPicture pic = new XLPicture
{
NoChangeAspect = true,
NoMove = false,
NoResize = false,
ImageStream = stream,
Name = "image",
EMUOffsetX = 4,
EMUOffsetY = 6,
MaxHeight = 100,
MaxWidth = 100,
PaddingX = 10,
PaddingY = 10
};
XLMarker fMark = new XLMarker
{
ColumnId = 8,
RowId = i +1
};
pic.AddMarker(fMark);
WorkSheet.AddPicture(pic);
}
}
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=download.xlsx");
using (MemoryStream MyMemoryStream = new MemoryStream())
{
wb.SaveAs(MyMemoryStream);
MyMemoryStream.WriteTo(Response.OutputStream);
Response.Flush();
Response.End();
}
}
}
}
catch (Exception)
{
throw;
}
//请使用此代码并告知我们您的意见。