C#winform打印excel问题

利用excel作为固定模板,VS2010 C/S往excel固定的单元格添加数据,添加数据后通过C/S程序打印excel,打印完成后再把打印前添加

的数据清空(全程不手动操作excel 全是有C/S程序执行)。这个是能打印成功的而且不报错。 但假如一张模板能打印5行数据,实际

有超过5条数据,这就涉及到多页打印,多页打印后就会报错 如图所示
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
System.Data.DataTable dt = dataGridView1.DataSource as System.Data.DataTable;
xlApp.Visible = false;
xlApp.UserControl = true;
xlApp.DisplayAlerts = false;
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(strFilePath); //目标文件
Microsoft.Office.Interop.Excel.Worksheet worksheet =

(Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
for (int cishu = 1; cishu <= q; cishu++)
{
if (dataGridView1.Rows.Count >= 5)
{
jj = 5;
}
else
{
jj = dataGridView1.Rows.Count;
}
for (int i = 0; i < jj; i++)
{

worksheet.Cells[8 + i, 1] = dt.Rows[i]["ClName"].ToString();
worksheet.Cells[8 + i, 4] = dt.Rows[i]["SpecifiCations"].ToString();
worksheet.Cells[8 + i, 7] = dt.Rows[i]["Company"].ToString();
worksheet.Cells[8 + i, 8] = dt.Rows[i]["Number"].ToString();

}
}
System.Windows.Forms.Application.DoEvents();
xlApp.DisplayAlerts = false;
xlApp.Visible = false;
worksheet = null;
workbook = null;
workbooks = null;
xlApp.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlNormal;
xlApp.Width = xlApp.Height = 0;
xlApp.Dialogs[Microsoft.Office.Interop.Excel.XlBuiltInDialog.xlDialogPrint].Show();
xlApp.Application.Quit();
xlApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
GC.Collect();

第1个回答  2018-06-08
dt.Rows[i]["ClName"]?.ToString();

急急winform C# 我导出数据到excel,怎么反而其他的数据显示不出?你是...
如果没用第三方控件的话,比如OpenXML啥的,你自己写的cell的格式或者style有问题,如果用第三方控件的话,那就仔细看文档吧。

c#winform程序填写excel打印连续打个不停
你可以先把EXCEL的数据读取到DATASET或者任意一个数据集中来,然后通过操作读取数据集来打印,可控性和程序性能方面都很好。

WinFrom打印Excel
一、调用Excel的方法:一般情况下有两种方法调用Excel:1、直接使用Delphi自带的组件:在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。2、动态创建Excel文件:首先创建 Excel 对象,使用ComObj,Excel2000:var ExcelApp: Variant;ExcelApp := CreateOleObject( 'Excel.Application' );二、导入数据:在程序中,...

C# winform DevExpress GridControl 大批量数据(9万行+4百列)导出E...
数据太多了,估计你只能换其他Excel导出的库了,比如NPOI 官方支持上有说明,如果Cell数小于1000000还可以试试

c#winform中怎么在导出excel时在excel第一行加上图片和表头,谢谢_百度...
一般这种情况,简单处理可以提前做好几个excel模板,先把图片加上去,导出数据时直接从第2行开始写入

C# Excel打印问题求解!!!高手速来!!
1.开始->运行,输入dcomcnfg.exe 2.打开组件服务器->计算机->我的电脑->DCOM配置;3.找到Microsoft Office Excel或者Microsoft Office Word点击右键->属性 4.选择安全,将启动和激活权限、访问权限、配置权限全部选择自定义,之后编辑,添加everyone用户,给它所有的权限 5.点击确定。

【在线等】【高分求教】c# winfrom 打印问题,怎么把多个页面合并成一个...
可以用API 函数 FindWindowEx(NULL,NULL,NULL,"正在打印") 找到你弹出的这个窗口,然后关闭它就行了,这样就不会弹出来了!

c#导出excel慢
如果你的程序是每导出一条数据,都是先连接数据库,再导出数据,再关闭数据库,然后循环完成,虽然在逻辑上没问题,且少量数据导出时速度上没太大感觉,但大数据量导出时必然出现导出问题。1、应在逻辑上改为,先连接数据库,循环导出完成后,再关闭链接。2、数据库建立恰当的索引,对大数据处理效果非常...

用c# 的winform!! excel当数据库,做一个合格证打印系统。
哪有excel当数据库的,就是把excel内容读出来,然后打印嘛,百度!!好吧,既然非得用excel做数据库,方法是这样的:1,.连接数据库 2,string strsql="select * from [Sheet1$]";\/\/查询表内容 3,OleDbCommand 读出数据 4,绑定到DataGridView ...

如何解决C#中用datagrid导出excel时,数据内容总是重复出现两次?_百度...
代码上取数只有一次,循环按代码逻辑来看,也只能把表中的数全部写道Excel中,而你的Excel中确有2次数,判断为,肯定有地方默认刷新上次操作了,你点击按钮这个操作完成后,触发了刷新功能,断点调试下就看出来了

相似回答