与其写这么多~~~还不如直接利用NET自带的microsoft reportviewer 还好啦!不仅支持EXCEL格式导出,连PDF都可以!!
只需设计好格式,然后把你想要的数据填充到里面就OK了!!
有不懂的可以HI我一下!
ReportViewer是微软报表解决方案的前台展示控件,目前嵌入在VS2005/VS2008/VS2010/VS2012中。它的优势主要有以下几点:
免费-微软自带的免费报表控件,不存在任何版权或者限制
简单-ReportViewer适合轻量的报表,开发相对简单
所见即所得-你只要在报表中设定好格式,打印出来是跟你看到的报表一样的
查看/打印-ReportViewer报表浏览器集成了报表查看及打印预览功能,可直接输出到打印机,也可直接输出为Excel文件或PDF文件,对于习惯Excel表格的人来说,ReportViewer报表控件非常适合
双平台-既可以在Web程序中使用,也可以在Windows程序中使用
希望对你有帮助
将小票打印机设置成默认的打印机,然后用Stream 流,下面连接的就是小票打印机打印rdlc报表,完全可以使用,你可以自己改改用调用的是PPrint()就行
#region 报表自打印
public void PPrint()
{
try
{
LocalReport report = thisreportViewer1LocalReport;
Export(report);
m_currentPageIndex = 0;
NBPrint();
if (m_streams != null)
{
foreach (Stream stream in m_streams)
streamClose();
m_streams = null;
}
}
catch (Exception ex)
{
MessageBoxShow("在打印过程中出现异常! " + exMessageToString());
}
}
private void Export(LocalReport report)
{
//75in 366in 0 0 0 0 当前设置为A4纵向
string deviceInfo =
"<DeviceInfo>" +
" <OutputFormat>EMF</OutputFormat>" +
" <PageWidth>721mm</PageWidth>" +
" <PageHeight>250mm</PageHeight>" +
" <MarginTop>0in</MarginTop>" +
" <MarginLeft>0in</MarginLeft>" +
" <MarginRight>0in</MarginRight>" +
" <MarginBottom>0in</MarginBottom>" +
"</DeviceInfo>";
Warning[] warnings;
m_streams = new List<Stream>();
reportRender("Image", deviceInfo, CreateStream, out warnings);
foreach (Stream stream in m_streams)
{
streamPosition = 0;
return;
}
}
private void NBPrint()
{
if (m_streams == null || m_streamsCount == 0)
return;
PrintDocument printDoc = new PrintDocument();
if (!printDocPrinterSettingsIsValid)
{
string msg = StringFormat("Can't find printer \"{0}\"", "默认打印机!");
MessageBoxShow(msg, "找不到默认打印机");
return;
}
printDocPrintPage += new PrintPageEventHandler(PrintPage);
printDocPrint();
thisClose();
}
private Stream CreateStream(string name, string fileNameExtension, Encoding encoding, string mimeType, bool willSeek)
{
string filenameext = DateTimeNowYearToString() + DateTimeNowDayToString() + DateTimeNowMonthToString() + DateTimeNowHourToString() + DateTimeNowMinuteToString() + DateTimeNowSecondToString();
Stream stream = new FileStream(name + "" + fileNameExtension, FileModeCreate);
m_streamsAdd(stream);
if (m_streamsCount > 1)
{
m_streamsRemoveAt((int)1);
}
return stream;
}
private void PrintPage(object sender, PrintPageEventArgs ev)
{
Metafile pageImage = new Metafile(m_streams[m_currentPageIndex]);
evGraphicsDrawImage(pageImage, evPageBounds);
m_currentPageIndex++;
evHasMorePages = (m_currentPageIndex < m_streamsCount);
}
#endregion
没试过封装DLL。
提供其他的方式:rdlc文件属性,生成 *** 作:嵌入的资源。
VBNET的一个示例代码:
MereportviewerReset()
'这个是相对路径调用的方法MereportviewerLocalReportReportPath
=
ApplicationStartupPath
&
"\Reports\报表名rdlc"
'增加报表数据源
MereportviewerLocalReportDataSourcesAdd(New
ReportDataSource("DataSet_IntMater",
DataSetIntMaterComplain))
'使用嵌入的资源方式调用报表
MereportviewerLocalReportReportEmbeddedResource
=
"项目名报表名rdlc"
MereportviewerLocalReportDisplayName
=
"报表"
MereportviewerRefreshReport()
以上就是关于在ASP.NET中,求DataTable导出excel的源码!!全部的内容,包括:在ASP.NET中,求DataTable导出excel的源码!!、ReportViewer报表怎么样、c#做小票打印机的应用程序,不知道安装了驱动,用的时usb001端口,不知道怎么连接,求大神帮助。。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)