sql怎么读取excel更新(SQL如何用EXCEL导入一个临时表的相关字段,然后用临时表更新原有的表数据的字段内容)

本文目录
- SQL如何用EXCEL导入一个临时表的相关字段,然后用临时表更新原有的表数据的字段内容
- C#能不能像操作SQL数据库那样使用sql语句对excel进行读取更新等操作
- excel中如何用sql语句跨工作簿查询提示无法更新,数据库或对象属性为只读
- 如何excel 中的数据更新至sql server 中的表
- 通过ODBC将SQL数据导入Excel,请教如何设置自动刷(更)新
- 如何通过excel更新数据库中对应数据更新
- sql server如何通过EXCEL文件来修改相对于的数据
SQL如何用EXCEL导入一个临时表的相关字段,然后用临时表更新原有的表数据的字段内容
IF @strOptions=’In’ AND NOT @strExcelPath IS NULL BEGIN
SET @strExcelPath = ’’’Microsoft.Jet.OLEDB.4.0’’,’’Data Source="’ + @strExcelPath + ’";User ID=Admin;Password=;Extended properties=Excel 5.0’’’
--将数据存放到临时表(一)
SET @strSql =
’SELECT ’ + @strExcelFiled +
’ INTO ##Temp
FROM
OpenDataSource(’+ @strExcelPath +’)’+ @strExcelSheetName +’$ ’
+@strWhere
--PRINT(@strSql)
EXEC(@strSql)
C#能不能像操作SQL数据库那样使用sql语句对excel进行读取更新等操作
可以的 我这有个 操作excel 的例子 你可以参考下
这是一个完整的 excel 操作类 ,以陆败前的一个项目用到的 DataSetToExcel
using System;
using System.Windows.Forms;
using System.Data;
using System.Collections;
using System.IO;
using System.Diagnostics;
namespace CHUmanager.MoonCake.Common
{
/// 《summary》
/// DataSetToExcel 的摘要说明。
/// 《/summary》
public class DataSetToExcel
{
private DateTime beforeTime; //Excel启动之前时间
private DateTime afterTime; //Excel启动之后时间
public DataSetToExcel()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/// 《summary》
/// 导出到Excel
//哗察/ 《/summary》
/// 《param name="filename"》为要保存的excel文件名《/param》
///《param name="GridX"》要打开的DataGrid《/param》
/// 《param name="excelname"》excelname为excel表的乱悉茄标题《/param》
public bool ExportToExcel(string filename,DataGrid GridX,string excelname)
{
if(GridX==null) return false;
string saveFileName="";
bool fileSaved=false;
SaveFileDialog saveDialog=new SaveFileDialog();
saveDialog.DefaultExt ="xls";
saveDialog.Filter="Excel文件|*.xls";
saveDialog.FileName =filename;
saveDialog.ShowDialog();
saveFileName=saveDialog.FileName;
if(saveFileName.IndexOf(":")《0) return false; //被点了取消
beforeTime = DateTime.Now;//Excel启动之前时间
Excel.Application excel= new Excel.ApplicationClass(); //启动Excel进程
afterTime = DateTime.Now;//Excel启动之后时间
Excel._Workbook xBk = excel.Workbooks.Add(true);
Excel._Worksheet xSt = (Excel._Worksheet)xBk.ActiveSheet;
Excel.Range excelCell=null;
try
{
//赋值对象
object objarr;
DataTable dtTest=new DataTable();;
int i,j;
int iRows,iCows;
int iVisable;
iVisable=0;
iCows=0;
ArrayList list=new ArrayList();
//如果绑定数据源是DataTable和DataSet,取得行数
if (GridX.DataSource is System.Data.DataTable)
{
dtTest=(DataTable)GridX.DataSource;
iRows=dtTest.Rows.Count;
}
else if(GridX.DataSource is System.Data.DataSet)
{
DataSet ds=(DataSet)GridX.DataSource;
dtTest=ds.Tables;
iRows=dtTest.Rows.Count;
}
else if (GridX.DataSource is System.Data.DataView)
{
DataView dvTest=(DataView)GridX.DataSource;
iRows=dvTest.Count;
dtTest=dvTest.Table;
}
//如果是集合取得行数
else
{
System.Collections.CollectionBase ColTest;
ColTest=(System.Collections.CollectionBase)GridX.DataSource;
iRows=ColTest.Count;
}
//添加表头
xSt.Cells = excelname;
//表头样式
excelCell=(Excel.Range)xSt.Cells;
excelCell.Interior.ColorIndex = 15;
excelCell.Font.Size = 14;
excelCell.Font.Name = "隶书";
excelCell.Font.Bold = true;
excelCell.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
//如果有TableStyles则根据TableStyles取得(标题行)
if (GridX.TableStyles.Count》0)
{
list.Clear();
iCows=GridX.TableStyles.GridColumnStyles.Count;
for(i=0;i《iCows;i++)
{
if(GridX.TableStyles.Width》0)
{
iVisable++;
list.Add(GridX.TableStyles.HeaderText);
//获取字段样式
excelCell=(Excel.Range)xSt.Cells;
excelCell.Font.Bold = true;
}
}
objarr = new object;
objarr=list.ToArray();
excelCell = xSt.get_Range(excel.Cells);
excelCell.Value2 = objarr;
//数据行
for(i=0;i《iRows;i++)
{
objarr = new object;
list.Clear();
for(j=0;j《iCows;j++)
{
if(GridX.TableStyles.Width》0)
{
list.Add(GridX.ToString().Replace("\n",""));
}
}
if (list.Equals(System.DBNull.Value))
{
break;
}
objarr=list.ToArray();
excelCell = xSt.get_Range(excel.Cells);
excelCell.Value2 = objarr;
}
}
else
{
iCows=dtTest.Columns.Count;
for(i=0;i《iCows;i++)
{
list.Add(dtTest.Columns.Caption.ToString());
}
objarr = new object;
objarr=list.ToArray();
excelCell = xSt.get_Range(excel.Cells);
excelCell.Value2 = objarr;
//数据行
for(i=0;i《iRows;i++)
{
objarr = new object;
list.Clear();
for(j=0;j《iCows;j++)
{
list.Add(GridX.ToString().Replace("\n",""));
}
if (list.Equals(System.DBNull.Value))
{
break;
}
objarr=list.ToArray();
excelCell = xSt.get_Range(excel.Cells);
excelCell.Value2 = objarr;
}
}
//合并单元格
Excel.Range rH = xSt.get_Range("A1",intToString(iCows)+"1");
rH.Merge(0);
dtTest.Dispose();
if(saveFileName!="")
{
try
{
xBk.Saved = true;
xBk.SaveCopyAs(saveFileName);
fileSaved=true;
}
catch(Exception ex)
{
fileSaved=false;
MessageBox.Show("导出文件时出错,文件可能正被打开!\n"+ex.Message);
}
}
else
{
fileSaved=false;
}
}
catch (System.Exception e)
{
System.Windows.Forms.MessageBox.Show(e.Message);
}
finally
{
excelCell=null;
xBk=null;
xSt=null;
excel=null;
GC.Collect();
KillExcelProcess();//强制结束Excel进程
}
return fileSaved;
}
/// 《summary》
/// 导出到Excel
/// 《/summary》
/// 《param name="filename"》为要保存的excel文件名《/param》
/// 《param name="dt"》dt为关联grid的DataTable《/param》
/// 《param name="excelname"》excelname为excel表的标题《/param》
public bool ExportToExcel(string filename,DataTable dt,string excelname)
{
if(dt==null) return false;
string saveFileName="";
bool fileSaved=false;
SaveFileDialog saveDialog=new SaveFileDialog();
saveDialog.DefaultExt ="xls";
saveDialog.Filter="Excel文件|*.xls";
saveDialog.FileName =filename;
saveDialog.ShowDialog();
saveFileName=saveDialog.FileName;
if(saveFileName.IndexOf(":")《0) return false; //被点了取消
beforeTime = DateTime.Now;//Excel启动之前时间
Excel.Application xlApp=new Excel.Application();
afterTime = DateTime.Now;//Excel启动之后时间
if(xlApp==null)
{
MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");
return false;
}
Excel.Workbooks workbooks=xlApp.Workbooks;
Excel.Workbook workbook=workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
Excel.Worksheet worksheet=(Excel.Worksheet)workbook.Worksheets;//取得sheet1
Excel.Range range;
long totalCount=dt.Rows.Count;
long rowRead=0;
float percent=0;
//合并单元格
Excel.Range rH = worksheet.get_Range("A1",intToString(dt.Columns.Count)+"1");
rH.Merge(0);
//写如标题
worksheet.Cells=excelname;
//标题样式
range=(Excel.Range)worksheet.Cells;
range.Interior.ColorIndex = 15;
range.Font.Size = 14;
range.Font.Name = "隶书";
range.Font.Bold = true;
range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
//写入字段
for(int i=0;i《dt.Columns.Count;i++)
{
worksheet.Cells.ColumnName;
//获取字段样式
range=(Excel.Range)worksheet.Cells;
range.Font.Bold = true;
}
//写入数值
for(int r=0;r《dt.Rows.Count;r++)
{
for(int i=0;i《dt.Columns.Count;i++)
{
worksheet.Cells;
}
rowRead++;
percent=((float)(100*rowRead))/totalCount;
System.Windows.Forms .Application.DoEvents();
}
range=worksheet.get_Range(worksheet.Cells);
range.BorderAround(Excel.XlLineStyle.xlContinuous,Excel.XlBorderWeight.xlThin,Excel.XlColorIndex.xlColorIndexAutomatic,null);
range.Borders.ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;
range.Borders.LineStyle =Excel.XlLineStyle.xlContinuous;
range.Borders.Weight =Excel.XlBorderWeight.xlThin;
if(dt.Columns.Count》1)
{
range.Borders.ColorIndex =Excel.XlColorIndex.xlColorIndexAutomatic;
range.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
range.Borders.Weight = Excel.XlBorderWeight.xlThin;
}
if(saveFileName!="")
{
try
{
workbook.Saved =true;
workbook.SaveCopyAs(saveFileName);
fileSaved=true;
}
catch(Exception ex)
{
fileSaved=false;
MessageBox.Show("导出文件时出错,文件可能正被打开!\n"+ex.Message);
}
}
else
{
fileSaved=false;
}
xlApp.Quit();
GC.Collect();//强行销毁,经测试这句话并没有结束Excel进程
KillExcelProcess();//强制结束进程
//用Excel打开文件
//if(fileSaved&&File.Exists(saveFileName))System.Diagnostics.Process.Start(saveFileName);
return fileSaved;
}
/// 《summary》
/// 数字转字符。如:1转A 2转B
/// 《/summary》
/// 《param name="num"》要转换的数字,最大为26,最小为1《/param》
/// 《returns》《/returns》
private string intToString(int num)
{
if (num》26 || num《1)
{
return null;
}
string;
str = "A";
str = "B";
str = "C";
str = "D";
str = "E";
str = "F";
str = "G";
str = "H";
str = "I";
str = "J";
str = "K";
str = "L";
str = "M";
str = "N";
str = "O";
str = "P";
str = "Q";
str = "R";
str = "S";
str = "T";
str = "U";
str = "V";
str = "W";
str = "S";
str = "Y";
str = "Z";
return str;
}
/// 《summary》
/// 结束Excel进程
/// 《/summary》
private void KillExcelProcess()
{
Process myProcesses;
DateTime startTime;
myProcesses = Process.GetProcessesByName("Excel");
//得不到Excel进程ID,暂时只能判断进程启动时间
foreach(Process myProcess in myProcesses)
{
startTime = myProcess.StartTime;
if(startTime 》 beforeTime && startTime 《 afterTime)
{
myProcess.Kill();
}
}
}
}
}
看完别忘记了加分啊!
excel中如何用sql语句跨工作簿查询提示无法更新,数据库或对象属性为只读
两种连接字符串中的数据文件改成c:\test.xls就可以使数据库或对象属性为只读了。
例如:把DataTable的内容导入到Excel,如果指定的Excel文件不存在,则自动创建。
对应的连接字符串:
OleDB连接字符串:"Provider=Microsoft.Jet.OleDb.4.0;Data
Source=c:\test.xsl;Extended ProPerties=Excel 8.0"
ODBC连接字符串:"DRIVER={{Microsoft Excel Driver
当Open()时,就报这个错误:“不能更新。数据库或对象为只读”
注意
如何excel 中的数据更新至sql server 中的表
在数据库初始阶段,我们有些数据在EXCEL中做好之后,需要将EXCEL对应列名(导入后对应数据库表的字段名),对应sheet(改名为导入数据库之后的表名)导入指定数据库,相当于导入一张表的整个数据。导入之前需要检查是否存在同名的表,导入的数据表以“$”结尾就是为了避免表重复,以作区分。下面就来看看具体操作步骤。
***隐藏网址***
通过ODBC将SQL数据导入Excel,请教如何设置自动刷(更)新
用QueryTables的RefreshPeriod属性
Private Sub Worksheet_Activate()
Activesheet.QueryTables(1).RefreshPeriod = 15
End
把这段程序谢谢到你放导入数据那个工作表中去
后面的值15可以自己调整,恰好能满足你的更新要求就行,取值为0-32767,0为停止自动刷新。
如何通过excel更新数据库中对应数据更新
操作步骤如下:
准备数据:在excel中构造出需要的数据
2.将excel中的数据另存为文本文件(有制表符分隔的)
3.将新保存到文本文件中的数据导入到pl*sql中
在pl*sql中选择tools--》text
importer,在出现的窗口中选择"data
from
textfile",然后再选择"open
data
file",
在弹出的文件选择框中选中保存有数据的文本文件,此时将会看到data
from
textfile中显示将要导入的数据
4.在configuration中进行如下配置
注:如果不将"name
in
header"勾选上会导致字段名也当做记录被导入到数据库中,从而导致数据错误
5.点击data
to
oracle,选择将要导入数据的表,并在fields中将文本中的字段与表中的字段进行关联
6.点击import按钮进行导入
7.查看导入的数据
ok,至此数据导入成功。
sql server如何通过EXCEL文件来修改相对于的数据
将excel的数据导入到新建的临时表,再批量更新
没有加where 条件,所以Halemp表全部更新了,用下面的语句试试
update Halemp set sbjs =b.sbjs ,gjjjs =b.gjjjs from Halemp a, excel b
where a.ecode = b.ecode

更多文章:
cadence adc仿真(Cadence教程3——与非电路原理图仿真以及版图绘制)
2025年12月27日 10:15
电脑中recent是什么(请问我的电脑里C盘上recent里有很多快捷方式图标,它们有什么用,能删除吗)
2026年4月12日 09:15
安卓permission denied(adb 遇到 Permission denied)
2025年12月28日 14:30
excel函数公式大全讲解乘法(excel乘法公式,财务人士必看)
2025年6月28日 18:45
java开发工具包怎么查看(java.util.* 这一类的包在哪里能查看其内容和作用)
2026年3月19日 05:00
简易php聊天室(用php做的聊天室CPU占用很高怎么解决)
2025年11月20日 08:45
delphi源码特殊标记(在delphi里怎么快速将一段代码加成注释)
2026年8月27日 21:45
西门子plc编程软件是什么(西门子PLC编程软件是西门子通用软件吗)
2025年6月5日 19:00
















