各位老师朋友帮帮小弟,公司想用C#做这么一个程序: 把Dataset数据导入到一个已有模板的Excel中,如何导入? 目前我的困惑时,模板占用了一定的行数,但是我不知道占用几行,所以我从Dataset往里面导数据的时候,无法确定起始导入行?这个问题该如何解决啊!请大侠们赐教!小弟在线等....急啊!
解决方案 »
- C#如何动态使用添加的图片(显示图片)?
- 各位大神我又来求助了,双缓冲的方面
- 单击确定,取消按钮不管事呢?帮帮看下吧
- 如何取得数据库字段类型
- 如何进行两个 datatable 的数据比较?
- 关于在win98下的打印!!!!!!!!!!!!!!!!
- [ADO.NET]在使用SqlDataAdapter.Update之前是不是必须要先Fill?
- 为什么不能将List<XXXX>转为List<object>
- 寻显示图片的源码,可显示、缩放、拖动图片,有滚动条,在线等待
- C#的SDK SAMPLE Duwamish7 Web应用程序为何运行不起来?
- 写 winfrom 程序 遇到个问题 在线等
- 关于C# winform中调用存储过程的问题
/// <summary>
/// 导出Excel表格
/// </summary>
/// <param name="data">DataTable</param>
/// <param name="page">Page</param>
/// <param name="columns">导出的列名中英文</param>
/// <param name="title">表格的标题</param>
/// <param name="fileName">导出的文件名</param>
public void ExportExcel(DataTable data, Page page, string[] columns, string title, string fileName)
{
StringBuilder sb = new StringBuilder(); string[] chColumns = new string[] { };//中文标题
string[] enColumns = new string[] { };//对象属性 if (!string.IsNullOrEmpty(columns[0]))
{
chColumns = columns[0].Split(';');
enColumns = columns[1].Split(';');
} sb.Append("<meta HTTP-EQUIV=\"content-type\" CONTENT=\"text/html; charset=utf-8\"><table border=\"1\" cellSpacing=\"0\" cellPadding=\"0\" width=\"100%\" >");
sb.Append("<tr><td colspan=\"" + enColumns.Length + "\" align=\"center\" style=\"font-size:24px; font-weight:bold;\">" + title + "</td></tr>");
sb.Append("<tr>"); //创建表头
if (chColumns.Length > 0)
{
for (int i = 0; i < chColumns.Length; i++)
{
sb.Append("<td align=\"center\" style=\"font-weight:bold;\">" + chColumns[i] + "</td>");
}
}
sb.Append("</tr>"); //添加内容
for (int i = 0; i < data.Rows.Count; i++)
{
sb.Append("<tr>");
for (int j = 0; j < enColumns.Length; j++)
{
sb.Append("<td align=\"center\">" + typeof(object).GetProperty(enColumns[j]).GetValue(data.Rows[i][j], null) + "</td>"); //获取list对象中的属性值
}
sb.Append("</tr>");
} sb.Append("</table>"); WriteFile(sb,page,fileName);
} /// <summary>
/// 将StringBuilder写入流
/// </summary>
/// <param name="sb">StringBuilder对象</param>
/// <param name="page">Page</param>
/// <param name="fileName">导出文件名</param>
private void WriteFile(StringBuilder sb,Page page,string fileName)
{
page.Response.Buffer = true;
page.Response.Clear();
page.Response.ClearContent();
page.Response.ClearHeaders(); page.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName + ".xls", System.Text.Encoding.UTF8));
page.Response.ContentType = "application/ms-excel"; page.Response.Charset = "UTF-8";
page.Response.HeaderEncoding = System.Text.Encoding.UTF8;
page.Response.ContentEncoding = System.Text.Encoding.UTF8; System.IO.StringWriter writer = new System.IO.StringWriter(sb);
System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(writer); //关闭流
htmlWriter.Close();
writer.Close(); //输出
page.Response.Write(writer);
page.Response.End();
}
{
Excel.Application app=new Application();
Excel._Workbook book;
Excel._Worksheet sheet;
book=(Excel._Workbook)app.Workbooks.Open(strPath,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
sheet=(Excel._Worksheet)book.Sheets[1];
int j=dvs.Count;
Excel.Range ran1=app.ActiveCell;
ran1=sheet.get_Range(sheet.Cells[1,1],sheet.Cells[1,9]);
ran1.Value2=Name;
for(int i=0;i <dvs.Count;i++)
{
try
{
sheet.Cells[i+4,"A"]=""
sheet.Cells[i+4,"B"]="";
}
catch(Exception ex)
{
HttpContext.Current.Response.Write(" <script language='javascript'>alert('"+ex.Message+"') </script>");
book.Close(null,null,null);
app.Workbooks.Close();
app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
sheet=null;
book=null;
app=null;
GC.Collect();
HttpContext.Current.Response.Write(" <script language='javascript'>alert('导出失败!') </script>");
return;
}
}
book.Save();
book.Close(null,null,null);
app.Workbooks.Close();
app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
sheet=null;
book=null;
app=null;
GC.Collect();
GC.Collect();
GC.Collect();
HttpContext.Current.Response.Write(" <script language='javascript'>alert('导出成功!') </script>"); HttpContext.Current.Response.Write(" <script language='javascript'>window.open('../Template_temp/A.xls','_bank') </script>");
}
ran1=sheet.get_Range(sheet.Cells[1,1],sheet.Cells[1,9]);
ran1.Value2=Name;
for(int i=0;i <dvs.Count;i++)
{
try
{
sheet.Cells[i+4,"A"]=""
sheet.Cells[i+4,"B"]=""; 这段代码是什么意思为什么要获取这个矩形呢? sheet.Cells[1,1],sheet.Cells[1,9]
http://www.jiemengwu.com/ 解梦屋 http://www.phpzy.com/php/ 绿色php资源http://www.shopfw.com网店服务
jixingchao001
能给出代码吗?