我想從SQL Server 2008數據庫導出一個表格到Excel表格,其數據庫模式中的約束條件相同。 例如,如果在數據庫中某個列的數據類型爲integer或varchar ,那麼在Excel表格中它應該具有相同的數據類型,並且如果有人試圖將無效數據輸入到Excel表格中,則應該在Excel表格本身中顯示一條錯誤消息列。從SQL Server 2008數據庫使用c導出excel表格
我發現了一個代碼腳本here但它沒有實現約束。
我想從SQL Server 2008數據庫導出一個表格到Excel表格,其數據庫模式中的約束條件相同。 例如,如果在數據庫中某個列的數據類型爲integer或varchar ,那麼在Excel表格中它應該具有相同的數據類型,並且如果有人試圖將無效數據輸入到Excel表格中,則應該在Excel表格本身中顯示一條錯誤消息列。從SQL Server 2008數據庫使用c導出excel表格
我發現了一個代碼腳本here但它沒有實現約束。
檢出EPPlus它能夠將數據錶轉換爲XLSX,並且可以將數據驗證應用於列以模擬Excel中的「數據類型」。
//這是我的代碼,我已經使用了SQL服務器到Excel數據庫轉儲 //試試看
private void button1_Click_2(object sender, EventArgs e)
{
DataSet DtSetmatch = new DataSet();
SQL.DataTable dttt = new SQL.DataTable();
string selectedTable = cmbImportItemList.Text;
using (SqlDataAdapter adater = new SqlDataAdapter("Select * from "+selectedTable, new SqlConnection(Properties.Settings.Default.connectionstring2)))
{
adater.Fill(dttt);
}
Excel.Application oXL;
Excel._Workbook oWB;
Excel._Worksheet oSheet;
oXL = new Excel.Application();
oXL.Visible = true;
oWB = (Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
oSheet = (Excel._Worksheet)oWB.ActiveSheet;
SQL.DataTable dtCategories = dttt.DefaultView.ToTable(true,dttt.Columns[0].ToString());
foreach (SQL.DataRow category in dtCategories.Rows)
{
oSheet = (Excel._Worksheet)oXL.Worksheets.Add();
oSheet.Name = category[0].ToString()
.Replace(" ", "")
.Replace(" ", "")
.Replace("/", "")
.Replace("\\", "")
.Replace("*", "");
string[] colNames = new string[dttt.Columns.Count];
int col = 0;
try
{
foreach (SQL.DataColumn dc in dttt.Columns) colNames[col++] = dc.ColumnName;////dc.ColumnName;
char lastColumn = (char)(65 + dttt.Columns.Count - 1);
oSheet.get_Range("A1", lastColumn + "1").Value2 = colNames;
oSheet.get_Range("A1", lastColumn + "1").Font.Bold = true;
oSheet.get_Range("A1", lastColumn + "1").VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
SQL.DataRow[] dr = dttt.Select(string.Format(""));
string[,] rowData = new string[dr.Count<SQL.DataRow>(), dttt.Columns.Count];
int rowCnt = 0;
int redRows = 2;
foreach (SQL.DataRow row in dr)
{
for (col = 0; col < dttt.Columns.Count; col++)
{
rowData[rowCnt, col] = row[col].ToString();
}
redRows++;
rowCnt++;
}
oSheet.get_Range("A2", lastColumn + rowCnt.ToString()).Value2 = rowData;
oXL.Visible = true;
oXL.UserControl = true;
try
{
oWB.SaveAs("C://Products.xlsx", AccessMode: Excel.XlSaveAsAccessMode.xlShared);
}
catch
{
}
break;
}
catch (Exception aee)
{
}
break;
}
}
這聽起來像一個大項目...... – 2012-04-10 14:13:09
Excel沒有數據類型的概念除了以特定方式格式化單元格/列。您可以嘗試創建一個嘗試將輸入與格式匹配的腳本,如果它不匹配,則會使單元格變爲紅色。或刪除內容或任何似乎是正確的 – Sascha 2012-04-11 03:28:56