一般在寫程式的時候, 針對 int 類型的變數, 沒有辦法使其接受 null
所以如果要表現 null 的情況(也就是不指定值), 通常會用絕不會指定的值來區隔
但是如果系統允許因為某些情況無法知道其值且能寫入資料庫, 此時或許就會存入-1, 用來代表其值未知
雖然可以依此規則判斷, 但是這樣會因為個人喜好不同而造成不同結果, 別人要來維護系統會比較困難
此時可以將寫法改為如下(C#)
int? price=null;
也就是在型別後面加上?, 這樣就可以處理 null 囉
原文在此
2007年8月30日 星期四
2007年8月23日 星期四
2007年8月22日 星期三
ASP.NET使用Office Web Componet處理EXCEL file
開發環境
專案參考COM:Microsoft.Office.Interop.Owc11
若已有EXCEL範本檔則先轉成XML格式後載入並加入其他資料
程式範例如下(VB.NET)
Dim xlsheets As New Owc11.SpreadsheetClass()
xlsheets.XMLURL = Server.MapPath(".\ExcelFiles") & "\" & "交通住宿名單.xml"
之後便可對xlsheets物件進行操作
例如要處理sheet1則使用下列語法
Dim xlsheet As xlsheets.Worksheets.Item("sheet1")
如果要將最後的結果直接傳送到瀏覽器上讓使用者開啟或存檔, 則可以使用下面的做法
Response.Clear()
Response.Buffer = True
Response.HeaderEncoding = System.Text.Encoding.GetEncoding("big5")
Response.AppendHeader("Content-Disposition", "attachment;filename=" + "交通住宿名單.xml")
Response.ContentType = "application/vnd.ms-excel"
Response.Write(xlsheets.XMLData)
Response.End()
伺服器端
安裝Office Web Componet
優缺點
相對於前面某篇文章提到使用Microsoft Excel 11.0 object library的方式來處理的好處是不會造成excel處理程序殘留
且伺服器端不需要太複雜的環境設定
並且我實際使用Microsoft Excel 11.0 object library來開發時會出現不穩定的現象
有時候報表很順利的產出, 有時候卻因為時間太久造成無法顯示網頁的狀況
且微軟亦不建議使用office object來開發web程式
因為會有很多無法預期的現象, 例如處理程序無法釋放就是其中之一
缺點則是不支援部分格式化功能, 如自動換行、自動調整列高...
不過我發現有一個方法可以解決無法自動換行的問題
把xlsheets.XMLData中包含ss:alignment的字串取代成ss:alignment wraptext="1"
不過無法自動調整列高的問題無法比照辦理,殘念...
寫入cell需注意若欄位為字串型態但內容皆為數字則應於左邊加上"\t"
以確保不會被自動識別為數值型態而被自動格式化(例如去除左邊的0)
若為DateTime型態則需先轉為字串型態=>((DateTime)value).ToString("yyyy/MM/dd")
專案參考COM:Microsoft.Office.Interop.Owc11
若已有EXCEL範本檔則先轉成XML格式後載入並加入其他資料
程式範例如下(VB.NET)
Dim xlsheets As New Owc11.SpreadsheetClass()
xlsheets.XMLURL = Server.MapPath(".\ExcelFiles") & "\" & "交通住宿名單.xml"
之後便可對xlsheets物件進行操作
例如要處理sheet1則使用下列語法
Dim xlsheet As xlsheets.Worksheets.Item("sheet1")
如果要將最後的結果直接傳送到瀏覽器上讓使用者開啟或存檔, 則可以使用下面的做法
Response.Clear()
Response.Buffer = True
Response.HeaderEncoding = System.Text.Encoding.GetEncoding("big5")
Response.AppendHeader("Content-Disposition", "attachment;filename=" + "交通住宿名單.xml")
Response.ContentType = "application/vnd.ms-excel"
Response.Write(xlsheets.XMLData)
Response.End()
伺服器端
安裝Office Web Componet
優缺點
相對於前面某篇文章提到使用Microsoft Excel 11.0 object library的方式來處理的好處是不會造成excel處理程序殘留
且伺服器端不需要太複雜的環境設定
並且我實際使用Microsoft Excel 11.0 object library來開發時會出現不穩定的現象
有時候報表很順利的產出, 有時候卻因為時間太久造成無法顯示網頁的狀況
且微軟亦不建議使用office object來開發web程式
因為會有很多無法預期的現象, 例如處理程序無法釋放就是其中之一
缺點則是不支援部分格式化功能, 如自動換行、自動調整列高...
不過我發現有一個方法可以解決無法自動換行的問題
把xlsheets.XMLData中包含ss:alignment的字串取代成ss:alignment wraptext="1"
不過無法自動調整列高的問題無法比照辦理,殘念...
寫入cell需注意若欄位為字串型態但內容皆為數字則應於左邊加上"\t"
以確保不會被自動識別為數值型態而被自動格式化(例如去除左邊的0)
若為DateTime型態則需先轉為字串型態=>((DateTime)value).ToString("yyyy/MM/dd")
2007年8月16日 星期四
製作.chm格式說明文件for .NET程式
微軟提供Sandcastle可將程式碼中以"///"開頭的文件說明轉出成為已編譯的 HTML Help 檔案(.chm), 但是必須要執行多達12個很複雜的命令列指令才能完成, 實在是讓人倒退三步, 因此我另外又找到SandcastleGUI這個前端介面, 只需要依照畫面要求輸入正確的資料後便能一鍵產生最後的.chm檔案
若在命令視窗出現錯誤則必須檢查專案的參考dll是否正確, 重新建置參考專案或將copy local設為true看是否問題能解決
SandcastleGUI針對輸入資料的檢查及注意事項都會提示使用者, 值得我們學習, 第一次看到作者把肖像放在畫面上, 不由得會心一笑 :)
若在命令視窗出現錯誤則必須檢查專案的參考dll是否正確, 重新建置參考專案或將copy local設為true看是否問題能解決
SandcastleGUI針對輸入資料的檢查及注意事項都會提示使用者, 值得我們學習, 第一次看到作者把肖像放在畫面上, 不由得會心一笑 :)
2007年8月15日 星期三
在ASP.NET中撰寫EXCEL 2003報表程式
開發環境
- 專案參考COM元件:Microsoft Excel 11.0 object library
網站伺服器
- 安裝office 2003
- 安裝Office 2003 Primary Interop Assemblies redistributable package
- 將會產生excel file的目錄設定安全性允許everyone write
- administrative tools > component service > computer > my computer > DCOM config > microsoft excel 應用程式 > 右鍵內容 > security
launch and activation permissions: 改為customize 並加入everyone將所有local權限設為allow
access permissions: 改為customize 並加入everyone將所有local權限設為allow
2007年8月10日 星期五
ASP.NET 2.0 資料庫連結字串用法
在ASP.NET 2.0中,使用了一种在运行时解析为连接字符串值的新的声明性表达式语法,按名称引用数据库连接字符串。连接字符串本身存储在 Web.config 文件中的 <connectionStrings> 配置节下面,以便易于在单个位置为应用程序中的所有页进行维护。
范例程序代码如下:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="Pubs" connectionString="Server=localhost;
Integrated Security=True;Database=pubs;Persist Security Info=True"
providerName="System.Data.SqlClient" />
<add name="Northwind" connectionString="Server=localhost;
Integrated Security=True;Database=Northwind;Persist Security Info=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<pages styleSheetTheme="Default"/>
</system.web>
</configuration>
程序代码说明:在上述范例的程序代码中,我们在Web.Config文件中的<connectionStrings> 配置节点下面设置了两个数据库连接字符串,分别指向pubs和Northwind两个示例数据库。注意,在2.0中引进了数据源控件,例如SqlDataSource 控件,我们可以将SqlDataSource 控件的 ConnectionString 属性被设置为表达式 <%$ ConnectionStrings:Pubs %>,该表达式在运行时由 ASP.NET 分析器解析为连接字符串。还可以为SqlDataSource 的 ProviderName 属性指定一个表达式,例如 <%$ ConnectionStrings:Pubs.ProviderName %>。其具体的用法和新特征将在以后的章节进行详细的介绍。现在有个基础的了解即可。
当然,我们也可以用下面的方式从配置文件直接读取数据库连接字符串。首先我们需要引用using System.Web.Configuration命名空间,该命名空间包含用于设置 ASP.NET 配置的类。
string connectionString =ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString;
程序代码说明:在上述范例的程序代码中,我们可以利用ConnectionStrings["Northwind"]读取相应的Northwind字符串。同理以可以利用ConnectionStrings["Pubs"]读取相应的Pubs字符串。
范例程序代码如下:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="Pubs" connectionString="Server=localhost;
Integrated Security=True;Database=pubs;Persist Security Info=True"
providerName="System.Data.SqlClient" />
<add name="Northwind" connectionString="Server=localhost;
Integrated Security=True;Database=Northwind;Persist Security Info=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<pages styleSheetTheme="Default"/>
</system.web>
</configuration>
程序代码说明:在上述范例的程序代码中,我们在Web.Config文件中的<connectionStrings> 配置节点下面设置了两个数据库连接字符串,分别指向pubs和Northwind两个示例数据库。注意,在2.0中引进了数据源控件,例如SqlDataSource 控件,我们可以将SqlDataSource 控件的 ConnectionString 属性被设置为表达式 <%$ ConnectionStrings:Pubs %>,该表达式在运行时由 ASP.NET 分析器解析为连接字符串。还可以为SqlDataSource 的 ProviderName 属性指定一个表达式,例如 <%$ ConnectionStrings:Pubs.ProviderName %>。其具体的用法和新特征将在以后的章节进行详细的介绍。现在有个基础的了解即可。
当然,我们也可以用下面的方式从配置文件直接读取数据库连接字符串。首先我们需要引用using System.Web.Configuration命名空间,该命名空间包含用于设置 ASP.NET 配置的类。
string connectionString =ConfigurationManager.ConnectionStrings["Northwind"].ConnectionString;
程序代码说明:在上述范例的程序代码中,我们可以利用ConnectionStrings["Northwind"]读取相应的Northwind字符串。同理以可以利用ConnectionStrings["Pubs"]读取相应的Pubs字符串。
訂閱:
文章 (Atom)
input 連結 datalist 用程式控制彈出選項
範例: nextTick(() => document.querySelector('input').showPicker()); ※僅支援現代瀏覽器
-
1. 設定檔案下載儲存位置為 C:\Users\%username%\AppData\Local\Google\Chrome\User Data\Default\Cache 2. 勾選"下載每個檔案前詢問儲存位置" 3. 針對不要下載的檔案類型於第一...
-
自動設定欄寬 sheet.Cells.AutoFitColumns(3, 20); // 必須設定 min 跟 max 才會正常作用 凍結欄位 sheet.View.FreezePanes(4, 4); 標題列 ws.PrinterSettings.RepeatRo...
-
使用 FreeSpire.XLS ... ep.Save(); using (var workbook = new Workbook()) using (var memStream = new MemoryStream()) { workbook.LoadFromSt...