如何在上传到数据库之前修剪excel列的字符

时间:2017-08-16 17:18:59

标签: c# asp.net

我正在将excel文件上传到我的数据库。我在Excel工作表中有一个INVOICE列。我想只将该列的前10位数字存储到数据库中。

例如:

Excel文件
发票
123354647478483

我想修剪这个数字,只存储数据库中的前10位数字,如1233546474

string sheet1 = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0]["TABLE_NAME"].ToString();
DataTable dtExcelData = new DataTable();

dtExcelData.Columns.AddRange(new DataColumn[10] {    
    new DataColumn("Invoice#", typeof(string)),
    new DataColumn("P#O##", typeof(string)),
    new DataColumn("Line#", typeof(int)),
    new DataColumn("Invoice Date",typeof(DateTime)),
    new DataColumn("Gross", typeof(string)),
    new DataColumn("Disc", typeof(string)),
    new DataColumn("NET", typeof(string)),
    new DataColumn("Date Pd", typeof(string)),
    new DataColumn("Check#/Doc#", typeof(string)),
    new DataColumn("Additional Info", typeof(string))
});

using (OleDbDataAdapter oda = new OleDbDataAdapter("SELECT * FROM [" + sheet1 + "]", excel_con))
{
    oda.Fill(dtExcelData);
}
excel_con.Close();

1 个答案:

答案 0 :(得分:2)

更改您的查询"SELECT * FROM [" + sheet1 + "]"

"SELECT LEFT(Invoice#, 10) as NewInvoice, * FROM [" + sheet1 + "]"

并更改new DataColumn("Invoice#", typeof(string)),

new DataColumn("NewInvoice", typeof(string)),

编辑:执行此操作时,您可能需要在Select语句中提及所有必需的列。

Select语句中使用列名时使用[& ]表示包含空格特殊字符的列名。因此查询将如下所示:

SELECT Left([Invoice#], 10) as NewInvoice, [P#O##],[Line#],[Invoice Date],Gross,Disc,NET,[Date Pd],[Check#/Doc#],[Additional Info] FROM [" + sheet1 + "]"