七).打包時加入卸载功能: 方法一: 1.在打包項目中添加文件msiexec.exe(一般可在c:\windows\system32\下找到) 2.在文件系統視圖中選擇應用程序文件夾,在msiexec.exe上按右鍵,選擇創建快捷方式,重命名快捷方式為"卸载". 3.更改此快捷方式的Arguments 为"/x {產品id}",產品id的值為打包項目的ProductCode屬性值. 方法二:(推荐) 1.先生成安装包,记下ProductCode(选择解决方案资源管理器根目录如setup1,再查看属性标签,不是右键中的属性),下面要用到 2.用VS.net建立一个新的控制台程序uninst.exe文件 'power by: landlordh 'for 2000,xp,2003 Module uninstall Sub Main() Dim myProcess As Process = New Process If System.Environment.OSVersion.ToString.IndexOf("NT 5") Then myProcess.Start("msiexec", "/X{2B65D4A9-C146-4808-AB4B-321FB0779559}") '改为自己的ProductCode End If myProcess.Close() End Sub End Module
//打开对话框
private void button1_Click(object sender, EventArgs e)
{
System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog();
if (fd.ShowDialog() == DialogResult.OK)
{
//TransferData(fd.FileName, "sheet1″,connString);
Inser(fd.FileName);
}
}函数
private void Inser(string FilePath)
{
try
{
string path = FilePath;
string conn = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source =" + path + ";Extended Properties=Excel 8.0";
//"Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=" + Server.MapPath("../ExcelData.xls") + ";" + "Extended Properties=Excel 8.0;"
OleDbConnection thisconnection = new OleDbConnection(conn);
thisconnection.Open();
string Sql = "select * from [Sheet1$]";
OleDbDataAdapter mycommand = new OleDbDataAdapter(Sql, thisconnection);
DataSet ds = new DataSet();
mycommand.Fill(ds);
for (int j = 0; j < count; j++)
{
string id_1= ds.Tables[0].Rows[j][0].ToString();//Name
string id_2 = ds.Tables[0].Rows[j][1].ToString();//LoinId
string id_3 = Agent.get32Md5( ds.Tables[0].Rows[j][2].ToString());//PASS
string id_4 =ds.Tables[0].Rows[j][3].ToString();//CallFee
string id_5=ds.Tables[0].Rows[j][4].ToString ();//contact
string id_6=ds.Tables[0].Rows[j][5].ToString ();//TeleNumber
string id_7 = ds.Tables[0].Rows[j][6].ToString();//Email
string id_8 = ds.Tables[0].Rows[j][7].ToString();//legal
string id_9 = ds.Tables[0].Rows[j][8].ToString();//Address
//执行的Sql语句
}
}
catch (Exception ex)
{
MessageBox.Show ( ex.Message);
} }
DbProviderFactory ExcelFact = DbProviderFactories.GetFactory("System.Data.OleDb");
//实例化连接
DbConn = ExcelFact.CreateConnection();
DbConn.ConnectionString = strConnect; //根据EXCEL文件创建DataTable
DbCommand pDbCmd = CreateCommand(DbConn, strSql, CommandType.Text);
DbDataAdapter pDataAdaPter = ExcelFact.CreateDataAdapter();
pDataAdaPter.SelectCommand = pDbCmd;
DbCommandBuilder pDbCmdBuilder = ExcelFact.CreateCommandBuilder();
pDbCmdBuilder.DataAdapter = pDataAdaPter;
DataSet pDataSet = new DataSet();
//填充数据集
pDataAdaPter.Fill(pDataSet, strTableName);
DataTable pDataTable = pDataSet.Tables[0];
pDataAdaPter.AcceptChangesDuringUpdate = true;
//保存更新
pDataAdaPter.Update(pDataSet, strTableName);代码不是完整的,你自己再补充一下调一下,是可以实现的EXCEL导入DB的。
二、把Excel数据读入DataTable
三、向数据库表插入数据
comm.CommandType = CommandType.StoredProcedure;
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[0]["结算比例(%)"].ToString() != " ")
{
OleDbCommand oleddata = new OleDbCommand("Update cattle Set where,oled);
}
}
这里是读取excel里一列的数据,如果你是多列,修改下就可以了。
先读取excel的数据,然后在更新到数据库里面就可以了。
{
//上传文件的绝对路径
string sFile = panduFile.PostedFile.FileName;
//获取文件全名
sFile = sFile.Substring(sFile.LastIndexOf("\\") + 1);
//获取后缀名
sFile = sFile.Substring(sFile.LastIndexOf("."));
if (sFile.ToLower() != ".xls")
{
Response.Write("请选择Excel文件!");
Response.End();
}
//为了防止重名,获得日期为文件名年月日时分秒毫秒
string datatime = System.DateTime.Now.ToString("yyyMMddHHmmssffff");
//上传后文件的新名
sFile = datatime + sFile;
//AppDomain.CurrentDomain.BaseDirectory.ToString() 获取此项目的根目录
//sPath 获取上传后的路径
string sPath = AppDomain.CurrentDomain.BaseDirectory.ToString() + "ExcelFiles\\" + sFile;
panduFile.PostedFile.SaveAs(sPath);
//myFile.CopyBaseAttributes(sPath);
this.GridView1.DataSource = GetExcelContent(sPath);
this.GridView1.DataBind();
this.GridView1.Visible = false;
DataSet ds = (DataSet)Session["book"]; MyData md = new MyData();
SqlConnection conn = md.getconn();
if (conn.State.ToString() == "Closed")
{
conn.Open();
}
SqlCommand cmd = new SqlCommand();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string km = ds.Tables[0].Rows[i][0].ToString().Trim();
string ny = ds.Tables[0].Rows[i][1].ToString().Trim();
string tm = ds.Tables[0].Rows[i][2].ToString().Trim();
string da = ds.Tables[0].Rows[i][3].ToString().Trim();
string ss = "insert into 判断 values('" + km + "','" + ny + "','" + tm + "','" + da + "','" + DateTime.Now.ToString().Trim() + "') ";
cmd.Connection = conn;
cmd.CommandText = ss;
try
{
cmd.ExecuteNonQuery(); }
catch (Exception ex)
{
Response.Write("插入数据失败!由于:" + ex.Message);
}
}
conn.Close();
Response.Write("<script>alert('数据已经导入到数据库!');</script>");
}
[Sheet1$]是指 数据库的表 还是EXCEL内容???
把dataset数据保存到excel
public void CreateExcel(DataSet ds, string FileName)
{
HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
string colHeaders = "", ls_item = "";
//定义表对象与行对象,同时用DataSet对其值进行初始化
DataTable dt = ds.Tables[0];
DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
int i = 0;
int cl = dt.Columns.Count;
//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
for (i = 0; i < cl; i++)
{
if (i == (cl - 1))//最后一列,加n
{
colHeaders += dt.Columns[i].Caption.ToString() + "\n";
}
else
{
colHeaders += dt.Columns[i].Caption.ToString() + "\t";
}
}
resp.Write(colHeaders);
//向HTTP输出流中写入取得的数据信息
//逐行处理数据
foreach (DataRow row in myRow)
{
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
for (i = 0; i < cl; i++)
{
if (i == (cl - 1))//最后一列,加n
{
ls_item += row[i].ToString() + "\n";
}
else
{
ls_item += row[i].ToString() + "\t";
}
}
resp.Write(ls_item);
ls_item = "";
}
resp.End();
}
string ConnectionString = "[sheet1$]";
OleDbConnection conn = new OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=excel路径;Extended Properties='Excel 8.0;IMEX=1'";
OleDbConnection olconn = new OleDbConnection(strConn);
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [sheet1$]", olconn);
DataSet ds = new DataSet();
oled.Open();
try
{
oada.Fill(ds, "[sheet1$]");
OleDbCommand comm = new OleDbCommand("select * from 网吧名称", conn);
comm.CommandType = CommandType.StoredProcedure;
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
for(int j=0;双循环)
{
if (ds.Tables[0].Rows[0][j].ToString() != " ")
{
string o = comboBox1.Text.Trim() + "应收金额";
OleDbCommand oleddata = new OleDbCommand("Update cattle Set " + o + "='" + ds.Tables[0].Rows[i][j].ToString() + "' where 网吧名称='" + ds.Tables[0].Rows[i]["网吧名称"].ToString() + "'", oled);
oleddata.ExecuteNonQuery();
}
}
}
MessageBox.Show("导入完成");
}
catch (Exception ex)
{
MessageBox.Show("excel表格格式不对,或者数据连接失败,检查后重试"+ex.ToString(), "导入失败");
}
你们打开EXCEL的时候
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=excel路径;Extended Properties='Excel 8.0;IMEX=1'";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
这里不会出现
“找不到可安装的ISAM”
这个问题?
我怎么解决不了?
提前谢谢啦
帮忙解决下
我遇到了和你一样的问题
至今没有解决
打包的问题看看对你有帮助没?
vs2005 打包,并自动安装SQL数据库,创建部署项目
1. 在“文件”菜单上指向“添加项目”,然后选择“新建项目”。
2. 在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。在“名称”框中键入 setup1。
3. 单击“确定”关闭对话框。
4. 项目被添加到解决方案资源管理器中,并且文件系统编辑器打开。
5. 在“属性”窗口中,选择 ProductName 属性,并键入 信息管理系统 。
二).将 主程序 项目的输出添加到部署项目中
1. 在“文件系统编辑器”中,选择“应用程序文件夹”。在“操作”菜单上,指向“添加”,然后选择“项目输出”。
2. 在“添加项目输出组”对话框中,选择“项目”下拉列表中的“你的程序”。
3. 单击“确定”关闭对话框。
4. 从列表中选择“主输出”和“内容文件”组,然后单击“确定”。
三).创建安装程序类
1. 在“文件”菜单上指向“新建”,然后选择“项目”。
2. 在“新建项目”对话框中,选择“项目类型”窗格中的“Visual Basic 项目”,然后选择“模板”窗格中的“类库”。在“名称”框中键入 installDB。
3. 单击“打开”关闭对话框。
4. 从“项目”菜单中选择“添加新项”。
5. 在“添加新项”对话框中选择“安装程序类”。在“名称”框中键入 installDB。
6. 单击“确定”关闭对话框。
7. 详细代码附后。
四).创建自定义安装对话框
1. 在解决方案资源管理器中选择“setup1”项目。在“视图”菜单上指向“编辑器”,然后选择“用户界面”。
2. 在用户界面编辑器中,选择“安装”下的“启动”节点。在“操作”菜单上,选择“添加对话框”。
3. 在“添加对话框”对话框中,选择“许可协议”对话框,然后单击“确定”关闭对话框。
4. 在“添加对话框”对话框中,选择“文本框 (A)”对话框,然后单击“确定”关闭对话框。
5. 在“操作”菜单上,选择“上移”。重复此步骤,直到“文本框 (A)”对话框位于“安装文件夹”节点之上。
6. 在“属性”窗口中,选择 BannerText 属性并键入:安装数据库.
7. 选择 BodyText 属性并键入:安装程序将在目标机器上安装数据库
8. 选择 Edit1Label 属性并键入:数据库名称:
9. 选择 Edit1Property 属性并键入 CUSTOMTEXTA1
10. 选择 Edit1Value 属性并键入:dbservers
11. 选择 Edit2Label 属性并键入:服务器名:
12. 选择 Edit2Property 属性并键入 CUSTOMTEXTA2
13. 选择 Edit2Value 属性并键入:(local)
14. 选择 Edit3Label 属性并键入:用户名:
15. 选择 Edit3Value 属性并键入:sa
16. 选择 Edit3Property 属性并键入 CUSTOMTEXTA3
17. 选择 Edit4Label 属性并键入:密码:
18. 选择 Edit4Property 属性并键入 CUSTOMTEXTA4
19. 选择 Edit2Visible、Edit3Visible 和 Edit4Visible 属性,并将它们设置为 true
五).创建自定义操作
1. 在解决方案资源管理器中选择“setup1”项目。在“视图”菜单上指向“编辑器”,然后选择“自定义操作”。
2. 在自定义操作编辑器中选择“安装”节点。在“操作”菜单上,选择“添加自定义操作”。
3. 在“选择项目中的项”对话框中,双击“应用程序文件夹”。
4. 选择“主输出来自 installDB(活动)”项,然后单击“确定”关闭对话框。
5. 在“属性”窗口中,选择 CustomActionData 属性并键入“/dbname=[CUSTOMTEXTA1] /server=[CUSTOMTEXTA2] /user=[CUSTOMTEXTA3] /pwd=[CUSTOMTEXTA4] /targetdir="[TARGETDIR]\"”。
附:/targetdir="[TARGETDIR]\"是安装后的目标路径,为了在installDB类中获得安装后的路径,我们设置此参数。
六).添加文件
1. 将SQL Server备份成文件DB.dat添加到“setup1”项目(在企业管理器中右击数据库->所有工作->备份数据库,备份成一个文件,取名为DB.dat)
2. 将安装文件LisenceFile.rtf添加到“setup1”项目
3. 在用户界面编辑器中,选择许可协议,设置LisenceFile属性为LisenceFile.rtf文件
4.一般会自动将依赖项添加到“检测到的依赖项”,如果没有,那么我们要手动将其加入步骤5)
Crystal_Managed2003.msm (如果有水晶报表)
dotnetfxredist_x86.msm (.net一定是必须的)
... (如果有引用其他的dll)
5. 如果使用了水晶报表,手动加入要包含的文件:项目-->添加-->合并模块(添加你的程序文件) (包括dotNetFramework和MDAC27),位于:C:\Program Files\Common Files\Merge Modules\ 下,*为必要的
具体功能如下:
(托管组件 MSM 处理所有托管组件的分发,其中包括 Windows 窗体查看器、Web 窗体查看器和所有 Crystal Decisions 命名空间)
* Crystal_Managed2003.msm
Crystal_Managed2003_chs.msm
(对于使报表运行所需的所有其他文件,由数据库访问 MSM 处理其分发。其中包括数据库、导出和图表驱动程序。)
* Crystal_Database_access2003.msm
Crystal_Database_access2003_chs.msm
(KeyCode MSM 处理 Crystal Decisions 密钥号码的安装,注意是添加合并模块,否则没有“MergeMouduleProperties”属性)
* Crystal_regwiz2003.msm
(如果报表文件使用了 ADO.NET 的 dataset 数据集对象,那么 VC_User_CRT71_RTL_X86_---.msm 和 VC_User_STL71_RTL_X86_---.msm 模块也必须包含在安装工程中。而且这两个模块的文件安装属性的"Module Retargetable Folder"项必须修改成为系统目录)
VC_User_CRT71_RTL_X86_---.msm
VC_User_STL71_RTL_X86_---.msm
(很多人经常出现查询错误,不妨加上这个)
5. 打开解决方案-->右键点击Crystal_regwiz2003.msm的属性,在“MergeMouduleProperties”里的 “License Key”填入:AAP5GKS0000GDE100DS(这个是你生成Crystal Report是用到的注册号的密码!)
七).打包時加入卸载功能:
方法一:
1.在打包項目中添加文件msiexec.exe(一般可在c:\windows\system32\下找到)
2.在文件系統視圖中選擇應用程序文件夾,在msiexec.exe上按右鍵,選擇創建快捷方式,重命名快捷方式為"卸载".
3.更改此快捷方式的Arguments 为"/x {產品id}",產品id的值為打包項目的ProductCode屬性值.
方法二:(推荐)
1.先生成安装包,记下ProductCode(选择解决方案资源管理器根目录如setup1,再查看属性标签,不是右键中的属性),下面要用到
2.用VS.net建立一个新的控制台程序uninst.exe文件
'power by: landlordh
'for 2000,xp,2003
Module uninstall
Sub Main()
Dim myProcess As Process = New Process
If System.Environment.OSVersion.ToString.IndexOf("NT 5") Then
myProcess.Start("msiexec", "/X{2B65D4A9-C146-4808-AB4B-321FB0779559}") '改为自己的ProductCode
End If
myProcess.Close()
End Sub
End Module
40分给你了··
还剩20分 问个送分题:
我今天做软件 电脑 突然蓝屏 已经出现了 3次了
每次都是 软件运行时···这是什么原因???
我软件 用了 SKINENGINE`
界面皮肤·和这个应该没关系吧?