将数据表导出为ex​​cel或带有图像的单词

时间:2016-03-24 05:09:09

标签: c# asp.net excel datatable

我有一个带有一些图像的数据表,我试图将该数据表导出为ex​​cel或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();

此处我还附加了我的Datatable snap enter image description here

1 个答案:

答案 0 :(得分:0)

这里我提供了将数据表导出到excel的示例代码。在导出后还附加了excel看起来像这样的图像。 enter image description here

使用以下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;
        }

//请使用此代码并告知我们您的意见。