在一个项目中,基本都存在报表模块。辛辛苦苦做一个项目,经历各种困难,最终只求一个结果。报表采用的方式多多,在我的工作中多用水晶或者office。
前几天在接手别人的工作后,发现其在写导出EXCEL时非常慢而且代码很复杂,长达上千行。加之需要不定期维护,乃变成了一个坑,故删掉重写。
前提条件:报表采用HTML的Table表格式堆写成的一个巨大字符串,标准HTMl格式
偷懒办法:用复制粘贴的方式将数据写入到报表中。先将字符串拷贝到系统剪贴板,然后调用EXCEl工作薄的Paste方法粘贴即可。代码如下。
引入EXCel的模块dll。
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); object o = Type.Missing; excel.Application.Workbooks.Add(true); excel.Visible = false; excel.DisplayAlerts = false; Workbook pBook = excel.Workbooks[1]; Worksheet pSheet = pBook.Worksheets[1] as Worksheet; //m_InnerText 报表字符串 Clipboard.SetText(m_InnerText, TextDataFormat.UnicodeText); pSheet.Paste(o, o); Clipboard.Clear(); pBook.Save(); excel.Save(sfd.FileName); excel.Quit(); excel = null;