利用MIME导出多sheet的excel(包含图片)
2008-03-28 14:47
387 查看
该方法适用以下情况:几个子页面作为自定义控件,放在一个主页面上。导出按钮在主页面上。
子页面的获取HTML代码的方法:
/// <summary>
/// 获得页面的HTML
/// </summary>
/// <returns></returns>
public string GetHtml()
{
string strResult = "";
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
this.EnableViewState = false;
this.dgr1.AllowPaging = false;
this.dgr1.DataSource = br.SelectProjectRiskHistory(ProjectNO,BeginDate,EndDate,FilterString);
this.dgr1.DataBind();
dgr1.RenderControl(hw);
strResult = sw.ToString().Replace("<a href=# ", "<p ");//替换不必要的HTML代码,美化EXCEL的格式
return strResult;
}
如果有图片则用以下方法导出HTML代码:
#region 导出Excel
private string[] ReplaceString =
{
"src=/"Common/Img/WarningLight/red.gif/"",
"src=/"Common/Img/WarningLight/yellow.gif/"",
"src=/"Common/Img/WarningLight/green.gif/"",
"src=/"Common/Img/WarningLight/orange.gif/""
};
private string[] NewString =
{
"src=/"file:///c:/red.png/"",
"src=/"file:///c:/yellow.png/"",
"src=/"file:///c:/green.png/"",
"src=/"file:///c:/orange.png/""
};
/// <summary>
/// 获得页面的HTML
/// </summary>
/// <returns></returns>
public string GetHtml()
{
string strResult = "";
//1.获取页面HTML代码
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
this.EnableViewState = false;
string strImgPath = Server.MapPath (this.txtPath.Text).Replace ("Common//Img//WarningLight","");
this.txtPath.Text = "";
for(int i=0 ; i<this.Controls.Count ; i++)
{
System.Web.UI.Control ctrl = this.Controls[i] as System.Web.UI.Control;
Helper.RecursiveClear(ctrl);
}
this.RenderControl(hw);
strResult = sw.ToString().Replace("<a href='#'", "<p ");
//2.获取图片的二进制流,并转换为Base64编码字符窜
//红灯路径
string path_Red = strImgPath + SysConsts.PMP_WARNINGLIGHT_COLOR_PATH + SysConsts.PMP_WARNINGLIGHT_COLOR_RED;
//黄灯
string path_Yellow = strImgPath + SysConsts.PMP_WARNINGLIGHT_COLOR_PATH + SysConsts.PMP_WARNINGLIGHT_COLOR_YELLOW;
//绿灯
string path_Green = strImgPath + SysConsts.PMP_WARNINGLIGHT_COLOR_PATH + SysConsts.PMP_WARNINGLIGHT_COLOR_GREEN;
//橙灯
string path_Orange = strImgPath + SysConsts.PMP_WARNINGLIGHT_COLOR_PATH + SysConsts.PMP_WARNINGLIGHT_COLOR_ORANGE;
string[] strImgsName = {"red","yellow","green","orange"};
string[] strImgsPath = {path_Red,path_Yellow,path_Green,path_Orange};
string strImgs = Helper.CreateExcelImg(strImgsName,strImgsPath);
//3.整合数据流
for(int j=0 ; j<ReplaceString.Length ; j++)
{
string strOld = ReplaceString[j];
string strNew = NewString[j];
strResult = strResult.Replace(strOld,strNew);
}
strResult = strResult.Replace("red.gif","")
.Replace("yellow.gif","")
.Replace("green.gif","")
.Replace("orange.gif","");
strResult = strResult+strImgs;
return strResult;
}
#endregion
/// <summary>
/// Get Image's Code In Base64 Code Format.
/// </summary>
/// <param name="path"></param>
/// <param name="strCode"></param>
/// <returns></returns>
private static string GetImageCodeInBase64(string path)
{
string strImgCodeInBase64 = "";
FileStream file;
byte[] base64buffer; //开辟缓冲区
// 打开图片文件,利用该图片构造一个文件流
file = new FileStream(path,FileMode.Open);
base64buffer = new byte[(int)file.Length];
BinaryReader br = new BinaryReader(file,Encoding.UTF8);
br.Read(base64buffer,0,(int)file.Length);
strImgCodeInBase64 = Convert.ToBase64String(base64buffer);
return strImgCodeInBase64;
}
/// <summary>
/// if Excel contain image,use this function to create the imgage's dataflow in Base64 code Format.
/// Mark:strImgsName and strImgsPath must be fit.
/// </summary>
/// <param name="strImgsName"></param>
/// <param name="strImgContent"></param>
/// <returns></returns>
public static string CreateExcelImg(string[] strImgsName,string[] strImgsPath)
{
StringBuilder sb = new StringBuilder();
string strImgCode = "";
for(int i=0 ; i<strImgsName.Length ; i++)
{
string strImgName = strImgsName[i];
string path = strImgsPath[i];
strImgCode = GetImageCodeInBase64(path);
sb.Append("/r/n--").Append(SysConsts.Boundary).Append("/r/n")
.Append("Content-Type: image/png/r/n")
.Append("Content-Transfer-Encoding: base64/r/n")
.Append("Content-Location: file:///c:/").Append(strImgName).Append(".png/r/n")
.Append("/r/n")
.Append(strImgCode)
.Append("/r/n");
}
return sb.ToString();
}
主页面中的按钮方法:
private void clkbtnOutpuExcel_Click(object sender, System.EventArgs e)
{
string strold1 = "border="+"/""+"0"+"/"";
string strold2 = "<TABLE";
string strold3 = "<table";
string strnew = "<TABLE border=1 bordercolor =Black";
DateTime dtBegin = Convert.ToDateTime(BeginDate);
DateTime dtEnd = Convert.ToDateTime(this.EndDate);
int week = (dtBegin.DayOfYear + (int)(new DateTime(dtBegin.Year,1,1).DayOfWeek))/7;
Manage_Step1 Manage1 = this.FindControl("Manage_Step1_1") as Manage_Step1;//自定义控件
Manage_Step2 Manage2 = this.FindControl("Manage_Step2_1") as Manage_Step2;
Manage_Step3 Manage3 = this.FindControl("Manage_Step3_1") as Manage_Step3;
Manage_Step4 Manage4 = this.FindControl("Manage_Step4_1") as Manage_Step4;
Manage_Step5 Manage5 = this.FindControl("Manage_Step5_1") as Manage_Step5;
// Manage_Step6 Manage6 = this.FindControl("Manage_Step6_1");
if(!this.Mangage_Panel_All_Hidden.Visible)
{
string strHtml1 = Manage1.GetHtml().Replace (strold1,"").Replace (strold2,strnew);
string strHtml2 = Manage2.GetHtml().Replace (strold1,"").Replace (strold3,strnew);
string strHtml3 = Manage3.GetHtml();
string strHtml4 = Manage4.GetHtml();
string strHtml5 = Manage5.GetHtml();
string[] strSheetsName = {"BaseInfo","ProjScheduel","ThisWeekRisk","ThisWeekProblem","ProjSurvail"};
string[] strHtmls = {strHtml1,strHtml3,strHtml4,strHtml5,strHtml2};
Helper.ExportToExcelInMIME(this.Response,"项目管理周报"+"("+this.ProjectNO+","+dtBegin.Year.ToString() +"第"+week.ToString ()+"周)",strHtmls,strSheetsName);
}
else
{
Helper.ShowMessage(this.Page,"6602");
}
}
public static string CreateExcelHead(string[] strSheetsName)
{
StringBuilder sb = new StringBuilder();
sb.Append("MIME-Version: ");
sb.Append(SysConsts.MIMEVersion);
sb.Append("/r/nX-Document-Type: ");
sb.Append(SysConsts.DocumentType);
sb.Append("/r/nContent-Type: ");
sb.Append(SysConsts.ContentType);
sb.Append("; boundary=/"");
sb.Append(SysConsts.Boundary);
sb.Append("/"/r/n");
sb.Append("/r/n");
sb.Append("------BOUNDARY_9527----/r/n");
sb.Append("Content-Location: file:///C:/0E8D990C/MimeExcel.xml/r/n");
sb.Append("Content-Transfer-Encoding: quoted-printable/r/n");
sb.Append("Content-Type: text/html; charset=/"us-ascii/"/r/n");
sb.Append("/r/n");
sb.Append("/r/n<html xmlns:o=3D/"urn:schemas-microsoft-com:office:office/"/r/n");
sb.Append("xmlns:x=3D/"urn:schemas-microsoft-com:office:excel/"/r/n");
sb.Append("xmlns=3D/"http://www.w3.org/TR/REC-html40/">/r/n");
sb.Append("<head>/r/n");
sb.Append("<xml>/r/n");
sb.Append("<x:ExcelWorkbook>/r/n");
sb.Append(" <x:ExcelWorksheets>/r/n");
for(int i=0 ; i<strSheetsName.Length ; i++)
{
sb.Append(" <x:ExcelWorksheet>/r/n");
sb.Append(" <x:Name>").Append(strSheetsName[i].ToString()).Append("</x:Name>/r/n");
sb.Append(" <x:WorksheetSource HRef=3D/"cid:sheet").Append(i.ToString()).Append("/"/>/r/n");
sb.Append(" </x:ExcelWorksheet>/r/n");
}
sb.Append(" </x:ExcelWorksheets>/r/n");
sb.Append("</x:ExcelWorkbook>/r/n");
sb.Append("</xml>/r/n");
sb.Append("</head>/r/n");
sb.Append("</html>/r/n");
return sb.ToString();
}
public static string CreateExcelBoundary(string strHtml,string strSheetName)
{
StringBuilder sb = new StringBuilder();
sb.Append("/r/n--").Append(SysConsts.Boundary).Append("/r/n");
sb.Append("Content-ID: sheet").Append(strSheetName).Append("/r/n");
sb.Append("Content-Transfer-Encoding: utf-8/r/n");
sb.Append("Content-Type: text/html; charset=/"utf-8/"/r/n");
sb.Append("/r/n");
sb.Append("<html xmlns:o=3D/"urn:schemas-microsoft-com:office:office/"/r/n");
sb.Append("xmlns:x=3D/"urn:schemas-microsoft-com:office:excel/"/r/n");
sb.Append("xmlns=3D/"http://www.w3.org/TR/REC-html40/">/r/n");
sb.Append("<head>/r/n");
sb.Append("<xml>/r/n");
sb.Append(" <x:WorksheetOptions>/r/n");
sb.Append(" <x:ProtectContents>False</x:ProtectContents>/r/n");
sb.Append(" <x:ProtectObjects>False</x:ProtectObjects>/r/n");
sb.Append(" <x:ProtectScenarios>False</x:ProtectScenarios>/r/n");
sb.Append(" </x:WorksheetOptions>/r/n");
sb.Append("</xml>/r/n");
sb.Append("</head>/r/n");
sb.Append("<body>/r/n");
sb.Append ("<meta http-equiv=Content-Type content=text/html;charset=utf-8>");
sb.Append(strHtml);
sb.Append("/r/n</body>/r/n");
sb.Append("</html>/r/n");
// sb.Append("------BOUNDARY_9527------/r/n");
return sb.ToString();
}
public static string CreateExcel(string[] strHtmls,string[] strSheetsName)
{
string strResult = "";
strResult = CreateExcelHead(strSheetsName);
for(int i=0 ; i<strSheetsName.Length ; i++)
{
strResult += CreateExcelBoundary(strHtmls[i],i.ToString());
}
strResult += "--"+ SysConsts.Boundary +"--";
return strResult;
}
public static void ExportToExcelInMIME(HttpResponse rs,string fileName,string[] strHtmls,string[] strSheetsName)
{
rs.ContentType = "application/vnd.ms-excel";
rs.Charset = "utf-8";
rs.ContentEncoding = System.Text.Encoding.UTF8 ;
string name = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);
rs.AppendHeader("Content-Disposition", "inline;filename=" + name + ".xls");
string strResult = CreateExcel(strHtmls,strSheetsName);
rs.Write(strResult.ToString().Replace("<a href=# ", "<p "));
rs.End();
}
该方法导出效果好,速度快,可以在2007上运行,无乱码。
子页面的获取HTML代码的方法:
/// <summary>
/// 获得页面的HTML
/// </summary>
/// <returns></returns>
public string GetHtml()
{
string strResult = "";
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
this.EnableViewState = false;
this.dgr1.AllowPaging = false;
this.dgr1.DataSource = br.SelectProjectRiskHistory(ProjectNO,BeginDate,EndDate,FilterString);
this.dgr1.DataBind();
dgr1.RenderControl(hw);
strResult = sw.ToString().Replace("<a href=# ", "<p ");//替换不必要的HTML代码,美化EXCEL的格式
return strResult;
}
如果有图片则用以下方法导出HTML代码:
#region 导出Excel
private string[] ReplaceString =
{
"src=/"Common/Img/WarningLight/red.gif/"",
"src=/"Common/Img/WarningLight/yellow.gif/"",
"src=/"Common/Img/WarningLight/green.gif/"",
"src=/"Common/Img/WarningLight/orange.gif/""
};
private string[] NewString =
{
"src=/"file:///c:/red.png/"",
"src=/"file:///c:/yellow.png/"",
"src=/"file:///c:/green.png/"",
"src=/"file:///c:/orange.png/""
};
/// <summary>
/// 获得页面的HTML
/// </summary>
/// <returns></returns>
public string GetHtml()
{
string strResult = "";
//1.获取页面HTML代码
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
this.EnableViewState = false;
string strImgPath = Server.MapPath (this.txtPath.Text).Replace ("Common//Img//WarningLight","");
this.txtPath.Text = "";
for(int i=0 ; i<this.Controls.Count ; i++)
{
System.Web.UI.Control ctrl = this.Controls[i] as System.Web.UI.Control;
Helper.RecursiveClear(ctrl);
}
this.RenderControl(hw);
strResult = sw.ToString().Replace("<a href='#'", "<p ");
//2.获取图片的二进制流,并转换为Base64编码字符窜
//红灯路径
string path_Red = strImgPath + SysConsts.PMP_WARNINGLIGHT_COLOR_PATH + SysConsts.PMP_WARNINGLIGHT_COLOR_RED;
//黄灯
string path_Yellow = strImgPath + SysConsts.PMP_WARNINGLIGHT_COLOR_PATH + SysConsts.PMP_WARNINGLIGHT_COLOR_YELLOW;
//绿灯
string path_Green = strImgPath + SysConsts.PMP_WARNINGLIGHT_COLOR_PATH + SysConsts.PMP_WARNINGLIGHT_COLOR_GREEN;
//橙灯
string path_Orange = strImgPath + SysConsts.PMP_WARNINGLIGHT_COLOR_PATH + SysConsts.PMP_WARNINGLIGHT_COLOR_ORANGE;
string[] strImgsName = {"red","yellow","green","orange"};
string[] strImgsPath = {path_Red,path_Yellow,path_Green,path_Orange};
string strImgs = Helper.CreateExcelImg(strImgsName,strImgsPath);
//3.整合数据流
for(int j=0 ; j<ReplaceString.Length ; j++)
{
string strOld = ReplaceString[j];
string strNew = NewString[j];
strResult = strResult.Replace(strOld,strNew);
}
strResult = strResult.Replace("red.gif","")
.Replace("yellow.gif","")
.Replace("green.gif","")
.Replace("orange.gif","");
strResult = strResult+strImgs;
return strResult;
}
#endregion
/// <summary>
/// Get Image's Code In Base64 Code Format.
/// </summary>
/// <param name="path"></param>
/// <param name="strCode"></param>
/// <returns></returns>
private static string GetImageCodeInBase64(string path)
{
string strImgCodeInBase64 = "";
FileStream file;
byte[] base64buffer; //开辟缓冲区
// 打开图片文件,利用该图片构造一个文件流
file = new FileStream(path,FileMode.Open);
base64buffer = new byte[(int)file.Length];
BinaryReader br = new BinaryReader(file,Encoding.UTF8);
br.Read(base64buffer,0,(int)file.Length);
strImgCodeInBase64 = Convert.ToBase64String(base64buffer);
return strImgCodeInBase64;
}
/// <summary>
/// if Excel contain image,use this function to create the imgage's dataflow in Base64 code Format.
/// Mark:strImgsName and strImgsPath must be fit.
/// </summary>
/// <param name="strImgsName"></param>
/// <param name="strImgContent"></param>
/// <returns></returns>
public static string CreateExcelImg(string[] strImgsName,string[] strImgsPath)
{
StringBuilder sb = new StringBuilder();
string strImgCode = "";
for(int i=0 ; i<strImgsName.Length ; i++)
{
string strImgName = strImgsName[i];
string path = strImgsPath[i];
strImgCode = GetImageCodeInBase64(path);
sb.Append("/r/n--").Append(SysConsts.Boundary).Append("/r/n")
.Append("Content-Type: image/png/r/n")
.Append("Content-Transfer-Encoding: base64/r/n")
.Append("Content-Location: file:///c:/").Append(strImgName).Append(".png/r/n")
.Append("/r/n")
.Append(strImgCode)
.Append("/r/n");
}
return sb.ToString();
}
主页面中的按钮方法:
private void clkbtnOutpuExcel_Click(object sender, System.EventArgs e)
{
string strold1 = "border="+"/""+"0"+"/"";
string strold2 = "<TABLE";
string strold3 = "<table";
string strnew = "<TABLE border=1 bordercolor =Black";
DateTime dtBegin = Convert.ToDateTime(BeginDate);
DateTime dtEnd = Convert.ToDateTime(this.EndDate);
int week = (dtBegin.DayOfYear + (int)(new DateTime(dtBegin.Year,1,1).DayOfWeek))/7;
Manage_Step1 Manage1 = this.FindControl("Manage_Step1_1") as Manage_Step1;//自定义控件
Manage_Step2 Manage2 = this.FindControl("Manage_Step2_1") as Manage_Step2;
Manage_Step3 Manage3 = this.FindControl("Manage_Step3_1") as Manage_Step3;
Manage_Step4 Manage4 = this.FindControl("Manage_Step4_1") as Manage_Step4;
Manage_Step5 Manage5 = this.FindControl("Manage_Step5_1") as Manage_Step5;
// Manage_Step6 Manage6 = this.FindControl("Manage_Step6_1");
if(!this.Mangage_Panel_All_Hidden.Visible)
{
string strHtml1 = Manage1.GetHtml().Replace (strold1,"").Replace (strold2,strnew);
string strHtml2 = Manage2.GetHtml().Replace (strold1,"").Replace (strold3,strnew);
string strHtml3 = Manage3.GetHtml();
string strHtml4 = Manage4.GetHtml();
string strHtml5 = Manage5.GetHtml();
string[] strSheetsName = {"BaseInfo","ProjScheduel","ThisWeekRisk","ThisWeekProblem","ProjSurvail"};
string[] strHtmls = {strHtml1,strHtml3,strHtml4,strHtml5,strHtml2};
Helper.ExportToExcelInMIME(this.Response,"项目管理周报"+"("+this.ProjectNO+","+dtBegin.Year.ToString() +"第"+week.ToString ()+"周)",strHtmls,strSheetsName);
}
else
{
Helper.ShowMessage(this.Page,"6602");
}
}
public static string CreateExcelHead(string[] strSheetsName)
{
StringBuilder sb = new StringBuilder();
sb.Append("MIME-Version: ");
sb.Append(SysConsts.MIMEVersion);
sb.Append("/r/nX-Document-Type: ");
sb.Append(SysConsts.DocumentType);
sb.Append("/r/nContent-Type: ");
sb.Append(SysConsts.ContentType);
sb.Append("; boundary=/"");
sb.Append(SysConsts.Boundary);
sb.Append("/"/r/n");
sb.Append("/r/n");
sb.Append("------BOUNDARY_9527----/r/n");
sb.Append("Content-Location: file:///C:/0E8D990C/MimeExcel.xml/r/n");
sb.Append("Content-Transfer-Encoding: quoted-printable/r/n");
sb.Append("Content-Type: text/html; charset=/"us-ascii/"/r/n");
sb.Append("/r/n");
sb.Append("/r/n<html xmlns:o=3D/"urn:schemas-microsoft-com:office:office/"/r/n");
sb.Append("xmlns:x=3D/"urn:schemas-microsoft-com:office:excel/"/r/n");
sb.Append("xmlns=3D/"http://www.w3.org/TR/REC-html40/">/r/n");
sb.Append("<head>/r/n");
sb.Append("<xml>/r/n");
sb.Append("<x:ExcelWorkbook>/r/n");
sb.Append(" <x:ExcelWorksheets>/r/n");
for(int i=0 ; i<strSheetsName.Length ; i++)
{
sb.Append(" <x:ExcelWorksheet>/r/n");
sb.Append(" <x:Name>").Append(strSheetsName[i].ToString()).Append("</x:Name>/r/n");
sb.Append(" <x:WorksheetSource HRef=3D/"cid:sheet").Append(i.ToString()).Append("/"/>/r/n");
sb.Append(" </x:ExcelWorksheet>/r/n");
}
sb.Append(" </x:ExcelWorksheets>/r/n");
sb.Append("</x:ExcelWorkbook>/r/n");
sb.Append("</xml>/r/n");
sb.Append("</head>/r/n");
sb.Append("</html>/r/n");
return sb.ToString();
}
public static string CreateExcelBoundary(string strHtml,string strSheetName)
{
StringBuilder sb = new StringBuilder();
sb.Append("/r/n--").Append(SysConsts.Boundary).Append("/r/n");
sb.Append("Content-ID: sheet").Append(strSheetName).Append("/r/n");
sb.Append("Content-Transfer-Encoding: utf-8/r/n");
sb.Append("Content-Type: text/html; charset=/"utf-8/"/r/n");
sb.Append("/r/n");
sb.Append("<html xmlns:o=3D/"urn:schemas-microsoft-com:office:office/"/r/n");
sb.Append("xmlns:x=3D/"urn:schemas-microsoft-com:office:excel/"/r/n");
sb.Append("xmlns=3D/"http://www.w3.org/TR/REC-html40/">/r/n");
sb.Append("<head>/r/n");
sb.Append("<xml>/r/n");
sb.Append(" <x:WorksheetOptions>/r/n");
sb.Append(" <x:ProtectContents>False</x:ProtectContents>/r/n");
sb.Append(" <x:ProtectObjects>False</x:ProtectObjects>/r/n");
sb.Append(" <x:ProtectScenarios>False</x:ProtectScenarios>/r/n");
sb.Append(" </x:WorksheetOptions>/r/n");
sb.Append("</xml>/r/n");
sb.Append("</head>/r/n");
sb.Append("<body>/r/n");
sb.Append ("<meta http-equiv=Content-Type content=text/html;charset=utf-8>");
sb.Append(strHtml);
sb.Append("/r/n</body>/r/n");
sb.Append("</html>/r/n");
// sb.Append("------BOUNDARY_9527------/r/n");
return sb.ToString();
}
public static string CreateExcel(string[] strHtmls,string[] strSheetsName)
{
string strResult = "";
strResult = CreateExcelHead(strSheetsName);
for(int i=0 ; i<strSheetsName.Length ; i++)
{
strResult += CreateExcelBoundary(strHtmls[i],i.ToString());
}
strResult += "--"+ SysConsts.Boundary +"--";
return strResult;
}
public static void ExportToExcelInMIME(HttpResponse rs,string fileName,string[] strHtmls,string[] strSheetsName)
{
rs.ContentType = "application/vnd.ms-excel";
rs.Charset = "utf-8";
rs.ContentEncoding = System.Text.Encoding.UTF8 ;
string name = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);
rs.AppendHeader("Content-Disposition", "inline;filename=" + name + ".xls");
string strResult = CreateExcel(strHtmls,strSheetsName);
rs.Write(strResult.ToString().Replace("<a href=# ", "<p "));
rs.End();
}
该方法导出效果好,速度快,可以在2007上运行,无乱码。
相关文章推荐
- 如何利用jxl导出excel图片
- php使用phpexcel生成excel包含图片并导出
- poi导出Excel与项目的结合-案例(包含图片的设置)
- 将eChart图片利用POI导出到Excel
- 使用jquery.table2excel,将HTML的table标签数据导出成excel,包含导出图片到excel
- java导出包含多个sheet的Excel
- 利用excel工具类导出文件的用法(包含实例)
- poi导出Excel与项目的结合-案例(包含图片的设置)
- PHPExcel 导出包含图片excel
- 利用OleDb方式对DataSet 和 Excel 数据快速导入导出
- JavaScript利用ActiveX导出Excel,Word
- dataset导出excel,带有多个sheet
- Java Web篇:导出等比例图片到Excel
- 利用ORACLE JAVA存储过程实现BLOB图片导出
- java 利用POI 上传解析导出Excel 深入
- struts2利用poi导出excel文件
- ASP.NET将数据导出到一个EXCEL文件的多个SHEET中
- 利用Java反射、泛型和apache/poi编写可通用的导出Excel代码
- 灵活的 反射 多sheet 导入导出 Excel 工具类
- struts2 利用 POI 导出 excel