|
如何用程式實現word查找替換方法,現有方法出現”OfficeTools字串參數太長”錯誤訊息? |
觀看回應
|
|
查找替換功能有字元數的限制,替換的最大長度為255個字元,應該直接修改Word中的Sentences或者Words對象來實現,如: OpenFileDialog dialog = new OpenFileDialog(); if (dialog.ShowDialog() == DialogResult.OK) { StreamReader reader = new StreamReader(dialog.FileName, Encoding.UTF8); string text = reader.ReadToEnd(); reader.Close();
Word.Application objWord = new Word.Application(); if (objWord == null) { throw new Exception("Word could not be started. Check that your office installation and project references are correct"); }
objWord.Visible = true; objWord.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone; object objMiss = Missing.Value; Word.Document objDocument = objWord.Documents.Add(ref objMiss, ref objMiss, ref objMiss, ref objMiss); try { objDocument.Sentences[1].Text = text; object filename = dialog.FileName + ".doc"; objDocument.SaveAs(ref filename, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss, ref objMiss); } finally { ((Word._Application)objWord).Quit(ref objMiss, ref objMiss, ref objMiss); Marshal.ReleaseComObject(objDocument); Marshal.ReleaseComObject(objWord); objDocument = null; objWord = null; objMiss = null; GC.Collect(); } }
|
|
|
|
WEB項目能否在水晶報表點擊打印按鈕直接打印 |
觀看回應
|
|
可以通過新增一個Button元件,然後在Click事件如下的寫法: CrystalDecisions.CrystalReports.Engine.ReportDocument rd = new CrystalDecisions. CrystalReports.Engine.ReportDocument(); rd.Load(Server.MapPath("CRPOS.rpt")); rd.PrintOptions.PrinterName = "EPSON ME 1"; try { rd.PrintToPrinter(1, true, 0, 0); } catch { Response.Write(""); }
|
|
|
|
在水晶報表中如何實現欄位代號去找關連表單的相對資料(如名稱等)? |
觀看回應
|
|
報表只能打印資料表的內容,無法自動去關聯其他table的內容,所以必須在原來的InfoCommand中,增加Left Join的語法,將對方所要列印的欄位加入即可列印。
|
|
|
|
設計好的報表,為何發佈后執行時發生:The type initializer for 'CrystalDecisions. CrystalReports. Engine.ReportDocument' threw an exception. |
觀看回應
|
|
如果你要發布執行CrystailReport,而且這台IIS Server上有沒有安裝Visual Studio的情況下,必須要做2個步驟: 1.請右鍵預設網站,選擇屬性,打開“默認網站屬性”視窗,在視窗裏選擇【主目錄】頁籤,把本地路徑C:\Inetpub\wwwroot記錄下來,然後在Server機的C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ASP.NETClientFiles\路徑下找到CrystalReportWebFormViewer3資料夾,在Client端的C:\Inetpub\wwwroot路徑下新建\aspnet_client\System_Web\2_0_50727路徑,并把CrystalReportWebFormViewer3資料夾复制到C:\Inetpub\wwwroot\aspnet_client\System_Web\2_0_50727\路徑下。 2.在C:\ProgramFiles\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\ CrystalReports\資料夾下找到CRRedist2005_x86.msi文件,用戶要把CrystalReport發布到哪台機器(沒有VS的),就將此文件複製到那台機器並安裝此文件。
|
|
|
|
有一個報表是要印標籤的,由於標籤的位置是固定的,但要從哪一個標籤開始印是不一定的,(例:一張標籤紙有24張小標籤紙,但有時候要由第8張開始印,有時候要由第6張開始印),請問要如何動態去控制報表列印的位置? |
觀看回應
|
|
可以在資料中添加一些空記錄,比如從第6張開始印,就添加5筆。在資料中依據實際增加一定數量的記錄。比如我要從3開始印,就需要添加2筆記錄,一般只有key欄位是必須設定值的,keyfield的值可以使用你資料表確定沒有的值,其他欄位可以依據自己的情況。 DataRow dr; for (...) { dr = idMaster.RealDataSet.Tables[0].NewRow(); dr[keyfield] = ... idMaster.RealDataSet.Tables[0].Rows.InsertAt(dr,0); } 以上程式寫在給報表賦DataSet前,比如MyReport.SetDataSource(Master.RealDataSet)這行程式前。
|
|
|