我正在将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();
答案 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 + "]"