print

Dim   xls       As   New   Excel.Application                 'EXCEL应用程序对象  
          Dim   xbook   As   Excel.Workbook                     'EXCEL工作薄对象  
          Dim   xsheet   As   Excel.Worksheet             'EXCEL工作表对象  
          Set   xbook   =   xls.Workbooks.Add  
   
          Set   xsheet   =   xbook.Worksheets(1)  
          '对xsheet操作,填充单元格  
          '……  
   
  With   xsheet.PageSetup  
            .PaperSize   =   xlPaperA4'A4纸  
            .Orientation   =   xlLandscape'横向  
            .CenterHeader   =   "&""宋体,常规""&14表头"  
            .CenterFooter   =   "&""宋体,常规""&P"  
  End   With  
  xls.Visible   =   True'显示Excel  
  xsheet.PrintPreview'打印预览   

//////////////////////////////////////////////////////////////////////////////////////////////////////

#region 声明
using System;
using System.Runtime.InteropServices;
using System.IO;
#endregion
namespace LongRuan
{
/// <summary>
/// POSPrinter 的摘要说明。
/// </summary>
public class POSPrinter
{
const int OPEN_EXISTING = 3;
string prnPort ="LPT1";
[DllImport("kernel32.dll", CharSet=CharSet.Auto)]
private static extern IntPtr CreateFile(string lpFileName,
int dwDesiredAccess, 
int dwShareMode, 
int lpSecurityAttributes,
int dwCreationDisposition ,
int dwFlagsAndAttributes ,
int hTemplateFile);
public POSPrinter()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public POSPrinter(string prnPort)
{
this.prnPort=prnPort;//打印机端口
}
public  string PrintLine(string str)
{
IntPtr iHandle = CreateFile(prnPort,  0x40000000, 0, 0, OPEN_EXISTING, 0, 0);
if(iHandle.ToInt32() == -1)
{
return "没有连接打印机或者打印机端口不是LPT1";
}
else
{
FileStream fs = new FileStream(iHandle, FileAccess.ReadWrite);
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default); //写数据
sw.WriteLine(str);
//开钱箱
//sw.WriteLine(Chr(&H1B) & Chr(70) & Chr(0) & Chr(20) & Chr(&HA0))
sw.Close();
fs.Close();
return "";
}
}
}
}


调用方法:
LongRuan.POSPrinter prn = new LongRuan.POSPrinter("LPT1");
string str =prn.PrintLine("写端口测试!");
if(str !="")
MessageBox.Show(str);

 

///////////////////////////////////////

using System;
using System.IO; 
using System.Drawing.Printing; 
using System.Runtime.InteropServices; 


public class RawPrinterHelper 

    [StructLayout(LayoutKind.Sequential, CharSet
=CharSet.Unicode)] 
        
public struct DOCINFOW 
    

        [MarshalAs(UnmanagedType.LPWStr)] 
        
public string pDocName; 
        [MarshalAs(UnmanagedType.LPWStr)] 
        
public string pOutputFile; 
        [MarshalAs(UnmanagedType.LPWStr)] 
        
public string pDataType; 
    }
 

    [DllImport(
"winspool.Drv", EntryPoint="OpenPrinterW", CallingConvention=CallingConvention.StdCall, CharSet=CharSet.Unicode, SetLastError=true, ExactSpelling=true)]
    
public static extern bool OpenPrinter(string src, ref IntPtr hPrinter, long pd);
 


    [DllImport(
"winspool.Drv", CallingConvention=CallingConvention.StdCall, CharSet=CharSet.Unicode, SetLastError=true, ExactSpelling=true)]
    
public static extern bool ClosePrinter(IntPtr hPrinter);
 


    [DllImport(
"winspool.Drv", EntryPoint="StartDocPrinterW", CallingConvention=CallingConvention.StdCall, CharSet=CharSet.Unicode, SetLastError=true, ExactSpelling=true)]
    
public static extern bool StartDocPrinter(IntPtr hPrinter, int level, ref RawPrinterHelper.DOCINFOW pDI);
 


    [DllImport(
"winspool.Drv", EntryPoint="EndDocPrinter", SetLastError=true, CharSet=CharSet.Unicode, ExactSpelling=true, CallingConvention=CallingConvention.StdCall)] 
    
public static extern bool EndDocPrinter(IntPtr hPrinter); 
    

    [DllImport(
"winspool.Drv", EntryPoint="StartPagePrinter", SetLastError=true, CharSet=CharSet.Unicode, ExactSpelling=true, CallingConvention=CallingConvention.StdCall)] 
    
public static extern bool StartPagePrinter(IntPtr hPrinter) ;
    

    [DllImport(
"winspool.Drv", EntryPoint="EndPagePrinter", SetLastError=true, CharSet=CharSet.Unicode, ExactSpelling=true, CallingConvention=CallingConvention.StdCall)] 
    
public static extern bool EndPagePrinter(IntPtr hPrinter) ;
    

    [DllImport(
"winspool.Drv", CallingConvention=CallingConvention.StdCall, CharSet=CharSet.Unicode, SetLastError=true, ExactSpelling=true)]
    
public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, int dwCount, ref int dwWritten);
 


    
public static bool SendBytesToPrinter(string szPrinterName, IntPtr pBytes, Int32 dwCount) 
    

        IntPtr hPrinter 
=  System.IntPtr.Zero; 
        Int32 dwError; 
        DOCINFOW di 
= new DOCINFOW(); 
        Int32 dwWritten 
= 0
        
bool bSuccess; 
        di.pDocName 
= "My Document"
        di.pDataType 
= "RAW"
        bSuccess 
= false
        
if (OpenPrinter(szPrinterName,ref hPrinter, 0)) 
        

            
if (StartDocPrinter(hPrinter, 1,ref di)) 
            

                
if (StartPagePrinter(hPrinter)) 
                

                    bSuccess 
= WritePrinter(hPrinter, pBytes, dwCount, ref dwWritten); 
                    EndPagePrinter(hPrinter); 
                }
 
                EndDocPrinter(hPrinter); 
            }
 
            ClosePrinter(hPrinter); 
        }
 
        
if (bSuccess == false
        

            dwError 
= Marshal.GetLastWin32Error(); 
        }
 
        
return bSuccess; 

    }
 


    
public static bool SendFileToPrinter(string szPrinterName, string szFileName) 
    

        FileStream stream1 
= new FileStream(szFileName, FileMode.Open);
        BinaryReader reader1 
= new BinaryReader(stream1);
        
byte[] buffer1 = new byte[((int) stream1.Length) + 1];
        buffer1 
= reader1.ReadBytes((int) stream1.Length);
        IntPtr ptr1 
= Marshal.AllocCoTaskMem((int) stream1.Length);
        Marshal.Copy(buffer1, 
0, ptr1, (int) stream1.Length);
        
bool flag1 = RawPrinterHelper.SendBytesToPrinter(szPrinterName, ptr1, (int) stream1.Length);
        Marshal.FreeCoTaskMem(ptr1);
        
return flag1;

    }
 

    
public static void SendStringToPrinter(string szPrinterName, string szString) 
    

        IntPtr pBytes; 
        Int32 dwCount; 
        dwCount 
= szString.Length; 
        pBytes 
= Marshal.StringToCoTaskMemAnsi(szString); 
        SendBytesToPrinter(szPrinterName, pBytes, dwCount); 
        Marshal.FreeCoTaskMem(pBytes); 
    }
 
}



调用

 


    sPrintStr   
= " test"

    PrintDialog pd 
= new PrintDialog(); 
    pd.PrinterSettings 
= new PrinterSettings(); 
    
//if (pd.ShowDialog(this) > DialogResult.None)
    
//{
    RawPrinterHelper.SendStringToPrinter(pd.PrinterSettings.PrinterName, sPrintStr); 
    
//}


     

### 关于 `else` 和 `print` 的组合用法 在 Python 中,`else` 是一种条件分支结构的一部分,通常与 `if` 或其他循环语句一起使用。而 `print()` 函数则是用来向标准输出打印信息的一个内置函数。当提到 `else print` 时,实际上是指的是在 `else` 分支中调用了 `print()` 函数。 以下是关于 `else` 结合 `print()` 使用的一些常见情况: #### 1. **`if-else` 基本结构中的 `print`** 在一个简单的 `if-else` 条件判断中,可以在 `else` 部分使用 `print()` 输出特定的信息[^1]。 ```python score = 75 if score >= 90: print("优秀") # 当分数大于等于90时执行此行 else: print("还需努力") # 否则执行此行 ``` 在这个例子中,如果变量 `score` 小于 90,则会进入 `else` 分支并打印 “还需努力”。 --- #### 2. **嵌套 `if-else` 中的 `print`** 可以将多个 `if-else` 进行嵌套,在不同的条件下分别使用 `print()` 打印对应的结果[^1]。 ```python age = 18 if age < 13: print("儿童") elif age < 20: print("青少年") else: print("成年人") ``` 这里展示了如何通过嵌套的方式实现更复杂的逻辑判断,并在每种情况下都可能调用 `print()`。 --- #### 3. **结合逻辑运算符的复杂条件下的 `print`** 可以通过逻辑运算符 (`and`, `or`, `not`) 构建更为复杂的条件表达式,并在满足或不满足这些条件时使用 `print()` 显示相应的内容[^2]。 ```python chinese = 95 maths = 85 english = 90 if (chinese >= 90 and maths >= 90) or (chinese >= 90 and english >= 90) or (maths >= 90 and english >= 90): print("至少两门科目成绩优异") else: print("需提升更多学科的成绩") ``` 这段代码检查是否有至少两个科目的成绩达到 90 分以上;如果没有,则会在 `else` 分支中打印提示消息。 --- #### 4. **循环中的 `else` 和 `print`** 除了用于条件判断外,`else` 还能配合某些类型的循环(如 `for` 或 `while`),在这种上下文中也可以包含 `print()` 调用[^1]。 ```python numbers = [1, 3, 5, 7] for num in numbers: if num % 2 == 0: print(f"找到偶数 {num}") break else: print("未发现任何偶数") ``` 在此示例中,只有当遍历完成整个列表且没有任何中断的情况下才会触发 `else` 分支内的 `print()` 功能。 --- ### 注意事项 需要注意的一点是,“`else print`” 并不是一个独立存在的语法单元,而是由 `else:` 开始定义一个代码块,在该块内部正常书写 `print(...)` 表达式的常规操作而已。因此理解清楚 `else` 如何与其他控制流语句协作至关重要。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值