re: 多义线添加顶点.lsp vlisp123 2012-04-28 03:11
#region Kill Special Excel Process
[DllImport("User32.dll", CharSet = CharSet.Auto)]
static extern int GetWindowThreadProcessId(IntPtr hWnd, out int lpdwProcessId);
//推荐这个方法,找了很久,不容易啊
private static void KillSpecialExcel(Microsoft.Office.Interop.Excel.Application m_objExcel)
{
try
{
if (m_objExcel != null)
{
int lpdwProcessId;
GetWindowThreadProcessId(new IntPtr(m_objExcel.Hwnd), out lpdwProcessId);
System.Diagnostics.Process.GetProcessById(lpdwProcessId).Kill();
}
}
catch (Exception ex)
{
Console.WriteLine("Delete Excel Process Error:" + ex.Message);
}
}
#endregion
}
}
this.状态栏.Text="你好!"+User.UserName+"("+User.Role +")";
re: 多义线添加顶点.lsp vlisp123 2012-04-28 03:09
namespace VS
{
public class InOutExcel
{
//把当前查询结果导出Excel
/// <summary>
/// 导出到Excel
/// </summary>
/// <param name="dtExcel">数据源</param>
public static void SaveAsExcel(System.Data.DataTable dtExcel)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "导出Excel (*.xls)|*.xls";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "导出文件保存路径";
saveFileDialog.ShowDialog();
string strName = saveFileDialog.FileName;
if (strName.Length != 0)
{
//导出到execl
System.Reflection.Missing miss = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.ApplicationClass excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
try
{
excel.Application.Workbooks.Add(true);
excel.Visible = false;//若是true,则在导出的时候会显示EXcel界面。
if (excel == null)
{
MessageBox.Show("EXCEL无法启动!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
Microsoft.Office.Interop.Excel.Workbooks books = (Microsoft.Office.Interop.Excel.Workbooks)excel.Workbooks;
Microsoft.Office.Interop.Excel.Workbook book = (Microsoft.Office.Interop.Excel.Workbook)(books.Add(miss));
Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.ActiveSheet;
sheet.Name = "test";
int m = 0, n = 0;
//生成列名称 这里i是从1开始的 因为我第0列是个隐藏列ID 没必要写进去
for (int i = 0; i < dtExcel.Columns.Count; i++)
{
excel.Cells[1, i + 1] = dtExcel.Columns[i].Caption.ToString();
}
//填充数据
for (int i = 0; i < dtExcel.Rows.Count; i++)
{
//j也是从1开始 原因如上 每个人需求不一样
for (int j = 0; j < dtExcel.Columns.Count; j++)
{
if (dtExcel.Rows[i][j].ToString().GetType() == typeof(string))
{
excel.Cells[i + 2, j + 1] = "'" + dtExcel.Rows[i][j].ToString().Trim();
}
else
{
excel.Cells[i + 2, j + 1] = dtExcel.Rows[i][j].ToString().Trim();
}
}
}
sheet.SaveAs(strName, miss, miss, miss, miss, miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss);
book.Close(false, miss, miss);
books.Close();
excel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(book);
System.Runtime.InteropServices.Marshal.ReleaseComObject(books);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
GC.Collect();
MessageBox.Show("数据已经成功导出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
//toolStripProgressBar1.Value = 0;
System.Diagnostics.Process.Start(strName);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误提示");
}
finally
{
//excel.Quit();
KillSpecialExcel(excel);
}
}
}
re: 多义线添加顶点.lsp vlisp123 2012-04-28 03:08
InOutExcel.cs.txt
using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Data.OleDb;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Configuration;
using DotNet.DbUtilities;
using DotNet.Utilities;
re: 多义线添加顶点.lsp vlisp123 2012-04-28 03:06
要导出EXCEL,需要一个DataTable数据表才行,把DataTable dt;//定义一个数据表类型这句代码放到最外层,即class下面。使之成为一个全局变量。
然后InOutExcel.SaveAsExcel(dt);调用
load加载方法里:
//读取用户列表加载到下拉框
string sql = "select * from UserAdmin";//SQL查询语句
DataTable dT = DbHelper.Fill(sql);//返回一个DataTable数据表
for (int i = 0; i < dT.Rows.Count; i++)//循环每一行
{
string str = dT.Rows[i]["UserName"].ToString();//读取UserName字段
this.comboBox1.Items.Add(str);//放进comboBox1中
}
-------------------------------------------------------------
相应的用下拉框comboBox1来接收用户名
//获取输入信息
//string UserName = this.txtName.Text;//读取用户名
string UserName = this.comboBox1.Text;
string PassWord = this.txtPWS.Text;//读取密码
re: 磁盘操作函数.LSP[未登录] xx 2010-07-08 18:52
厉害
re: VLISP使用数据库.lsp 起子 2010-05-04 20:57
正在找这方面的资料,研究一下看看。
re: 不断完善我的Vlisp程序 清风徐来 2010-03-02 20:33
我也用vlisp语言编写房产面积计算程序,界面使用Opendcl,版主你的程序看上去也不错!
完全看不懂
但是看标题就够了
“不断完善”
我觉得这四个字是人生最美好的过程写照
呵呵,路过此地,给博主问个好~
祝你幸福^-^
re: 多义线添加顶点.lsp 晚儿 2008-05-02 18:09
看不懂 是vb嘛?
椰汁的味道 跟 椰树牌椰汁 味道 差的很多
re: VLISP使用数据库.lsp 深藏记忆 2008-03-25 21:55
@数据库新手 可是“老手”?哈哈
re: VLISP使用数据库.lsp 数据库新手 2008-03-25 20:40
lisp与数据库(不论是ACCESS或是MS SQL)接口都非常繁杂,实际上我们可以换一种思路操作数据库。一、从CAD、LISP到数据库,单纯从作图角度来说,主要是读取数据库中的数据,再转化成图形;二、由于LISP调用函数功能非常强大;三、由于VBA与数据库接口功能非常强。因此我们完全可以按照以下思路连接数据库:1、用LISP语言调用VBA程序连接数据库并生成一个.TXT;2、用LISP读取.TXT文件并成图;3、用LISP语言重新改写这个.TXT文件,使其在外表看不露痕迹。 按上面思路编写程序,其代码不及上述的5分之一
@老韩
凹凸多边形都可以的,不信你可以试试是否对凹多边形也适用呢。
真服了你了,这里写技术很好玩?我没有看你代码,我就想问一句:你是否考虑了凹多边形? 如果说你不知道我问的什么,当我没有问好了。
re: 学习LISP语言的体会 卓春敏 2007-10-28 21:28
您好! 首先很佩服你能自己写出很大的程序。我是一位研一的学生,刚刚接触lisp。可能接下去的两年都是以这个学习为内容了。近日导师要求我寻找一个用Lisp编写的参数化设计的复杂点的例子。不知道你能否帮到我。 我的邮箱是 haifanyjs@163.com QQ是229946393 希望你能帮下我
re: 学习LISP语言的体会 卓春敏 2007-10-28 21:24
您好!
re: 学习LISP语言的体会 zml84 2007-07-27 16:17
lisp之美只有经常思索才能体现。
re: 我的加载地形图程序 悠~ice 2006-08-21 00:28
这里文章太专业了....