RDLC Invalid column
開發一支新的RDLC Report後,移至新主機上出現Invalid column的訊息,
最後原來是在新主機上的資料庫忘記開欄位
2014年7月30日 星期三
2014年7月21日 星期一
ASP.NET DataTable轉成Excel實體檔案
ASP.NET DataTable轉成Excel實體檔案
C#:
C#:
protected void Button1_Click(object sender, EventArgs e) { #region 建立虛擬表格 DataTable dt = new DataTable(); DataColumn column; column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "company_name"; dt.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "tel"; dt.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "fax"; dt.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "email"; dt.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "contact"; dt.Columns.Add(column); column = new DataColumn(); column.DataType = Type.GetType("System.String"); column.ColumnName = "company_address"; dt.Columns.Add(column); #endregion //輸出 ExcelFileStream(dt, @"D:\", "abc.xls"); }
private void ExcelFileStream(DataTable dt, string savepath, string filename) { try { Stream fs = RenderDataTableToExcel(dt); SaveStreamToFile(savepath + filename, fs); } catch (Exception) { throw; } }
public static Stream RenderDataTableToExcel(DataTable srcTable) { try { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet(); HSSFRow headerRow = (HSSFRow)sheet.CreateRow(0); foreach (DataColumn column in srcTable.Columns) { headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName); } int rowIndex = 1; foreach (DataRow row in srcTable.Rows) { HSSFRow dataRow = (HSSFRow)sheet.CreateRow(rowIndex); foreach (DataColumn column in srcTable.Columns) { dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString()); } rowIndex++; } MemoryStream stream = new MemoryStream(); workbook.Write(stream); stream.Flush(); stream.Position = 0; sheet = null; headerRow = null; workbook = null; return stream; } catch (Exception) { throw; } }
public void SaveStreamToFile(string fileFullPath, Stream stream) { try { if (stream.Length == 0) return; // Create a FileStream object to write a stream to a file using (FileStream fileStream = System.IO.File.Create(fileFullPath, (int)stream.Length)) { // Fill the bytes[] array with the stream data byte[] bytesInStream = new byte[stream.Length]; stream.Read(bytesInStream, 0, (int)bytesInStream.Length); // Use FileStream object to write to the specified file fileStream.Write(bytesInStream, 0, bytesInStream.Length); } } catch (Exception) { throw; } }
2014年7月17日 星期四
ASP.NET 呼叫CMD執行批次檔BAT
ASP.NET 呼叫CMD執行批次檔BAT
C#:
C#:
private void go() { try { // Get the full file path string strFilePath = @"C:\inetpub\wwwroot\ga\copyphone.bat"; // Create the ProcessInfo object System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("cmd.exe"); psi.UseShellExecute = false; psi.RedirectStandardOutput = true; psi.RedirectStandardInput = true; psi.RedirectStandardError = true; psi.WorkingDirectory = @"C:\inetpub\wwwroot\ga\"; // Start the process System.Diagnostics.Process proc = System.Diagnostics.Process.Start(psi); // Open the batch file for reading System.IO.StreamReader strm = new System.IO.StreamReader(strFilePath, System.Text.Encoding.GetEncoding(950)); //System.IO.StreamReader strm = System.IO.File.OpenText(strFilePath); //strm.CurrentEncoding.GetEncoder = System.Text.Encoding.GetEncoding(950); //strm = System.IO.File.OpenText(strFilePath); Response.Write(strm.CurrentEncoding.ToString()); // Attach the output for reading System.IO.StreamReader sOut = proc.StandardOutput; // Attach the in for writing System.IO.StreamWriter sIn = proc.StandardInput; // Write each line of the batch file to standard input while (strm.Peek() != -1) { sIn.WriteLine(strm.ReadLine()); } strm.Close(); // Exit CMD.EXE string stEchoFmt = "# {0} run successfully. Exiting"; sIn.WriteLine(String.Format(stEchoFmt, strFilePath)); sIn.WriteLine("EXIT"); // Close the process proc.Close(); // Read the sOut to a string. string results = sOut.ReadToEnd().Trim(); // Close the io Streams; sIn.Close(); sOut.Close(); string fmtStdOut = "{0}"; this.Response.Write(String.Format(fmtStdOut,results.Replace(System.Environment.NewLine, "
"))); } catch (Exception ex) { throw ex; } }
2014年7月2日 星期三
ASP.NET UseSubmitBehavior用法
ASP.NET UseSubmitBehavior用法
以下是我是目前的理解:有錯誤請指正
(1)一般用法:按Button1後執行的動作是Submit,執行Button1_Click,此時預設值UseSubmitBehavior="true"
(2)加入UseSubmitBehavior="false"用法:按Button1後執行的動作是一般的Button,執行Button1_Click
(3)加入UseSubmitBehavior="false"和OnClientClick用法:按Button1後執行的動作是一般的Button,先執行OnClientClick後再執行Button1_Click
(4)OnClientClick用法:按Button1後執行的動作是一般的Button,先執行OnClientClick後再執行Button1_Click,如果在OnClientClick事件發生後卻得到false的訊息,就不會發生PostBack
以下是我是目前的理解:有錯誤請指正
(1)一般用法:按Button1後執行的動作是Submit,執行Button1_Click,此時預設值UseSubmitBehavior="true"
<asp:Button ID="Button1" runat="server" Text="Submit" OnClick="Button1_Click" />
(2)加入UseSubmitBehavior="false"用法:按Button1後執行的動作是一般的Button,執行Button1_Click
<asp:Button ID="Button1" runat="server" Text="Submit" OnClick="Button1_Click" UseSubmitBehavior="false" />
(3)加入UseSubmitBehavior="false"和OnClientClick用法:按Button1後執行的動作是一般的Button,先執行OnClientClick後再執行Button1_Click
<asp:Button ID="Button1" runat="server" Text="Submit" OnClick="Button1_Click" UseSubmitBehavior="false" OnClientClick="this.disabled=true;this.value='Saveing...';" />
(4)OnClientClick用法:按Button1後執行的動作是一般的Button,先執行OnClientClick後再執行Button1_Click,如果在OnClientClick事件發生後卻得到false的訊息,就不會發生PostBack
<asp:Button ID="Button1" runat="server" Text="Submit" OnClick="Button1_Click" OnClientClick="return confirm('Are you sure you want to submit this form?');" />
訂閱:
文章 (Atom)