返回目录:excel表格制作
1 、引用 Microsoft.Office.Interop.Excel.dll
2、引用命名空间、使用别名
using System.Reflection;
using Excel = Microsoft.Office.Interop.Excel;
3.写入excel
写入函数
public void ToExcel(string strTitle)
{
int nMax = 9;
int nMin = 4;
int rowCount = nMax – nMin + 1;//总行数
const int columnCount = 4;//总列数
//创建Excel对象
Excel.Application excelApp = new Excel.ApplicationClass();
//新建工作簿
Excel.Workbook workBook = excelApp.Workbooks.Add(true);
//新建工作表
Excel.Worksheet worksheet = workBook.ActiveSheet as Excel.Worksheet;
////设置标题
//Excel.Range titleRange = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, columnCount]);//选取单元格
//titleRange.Merge(true);//合并单元格
//titleRange.Value2 = strTitle; //设置单元格内文本
//titleRange.Font.Name = “宋体”;//设置字体
//titleRange.Font.Size = 18;//字体大小
//titleRange.Font.Bold = false;//加粗显示
//titleRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中
//titleRange.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;//垂直居中
//titleRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;//设置边框
//titleRange.Borders.Weight = Excel.XlBorderWeight.xlThin;//边框常规粗细
//设置表头
string[] strHead = new string[columnCount] { “序号”, “范围”, “分组1″, “分组2″ };
int[] columnWidth = new int[4] { 8, 16, 8, 10 };
for (int i = 0; i < columnCount; i++) {
//Excel.Range headRange = worksheet.Cells[2, i + 1] as Excel.Range;//获取表头单元格
Excel.Range headRange = worksheet.Cells[1, i + 1] as Excel.Range;//获取表头单元格,不用标题则从1开始
headRange.Value2 = strHead[i];//设置单元格文本
headRange.Font.Name = “宋体”;//设置字体
headRange.Font.Size = 12;//字体大小
headRange.Font.Bold = false;//加粗显示
headRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中
headRange.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;//垂直居中
headRange.ColumnWidth = columnWidth[i];//设置列宽
// headRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;//设置边框
// headRange.Borders.Weight = Excel.XlBorderWeight.xlThin;//边框常规粗细
}
//设置每列格式
for (int i = 0; i < columnCount; i++) {
//Excel.Range contentRange = worksheet.get_Range(worksheet.Cells[3, i + 1], worksheet.Cells[rowCount - 1 + 3, i + 1]);
Excel.Range contentRange = worksheet.get_Range(worksheet.Cells[2, i + 1], worksheet.Cells[rowCount - 1 + 3, i + 1]);//不用标题则从第二行开始
contentRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中
contentRange.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;//垂直居中
//contentRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;//设置边框
// contentRange.Borders.Weight = Excel.XlBorderWeight.xlThin;//边框常规粗细
contentRange.WrapText = true;//自动换行
contentRange.NumberFormatLocal = “@e69da5e6ba90e799bee5baa6331”;//文本格式
}
//填充数据
for (int i = nMin; i <= nMax; i++) {
int k = i – nMin;
//excelApp.Cells[k + 3, 1] = string.Format(“{0}”, k + 1);
//excelApp.Cells[k + 3, 2] = string.Format(“{0}-{1}”, i – 0.5, i + 0.5);
//excelApp.Cells[k + 3, 3] = string.Format(“{0}”, k + 3);
//excelApp.Cells[k + 3, 4] = string.Format(“{0}”, k + 4);
excelApp.Cells[k + 2, 1] = string.Format(“{0}”, k + 1);
excelApp.Cells[k + 2, 2] = string.Format(“{0}-{1}”, i – 0.5, i + 0.5);
excelApp.Cells[k + 2, 3] = string.Format(“{0}”, k + 3);
excelApp.Cells[k + 2, 4] = string.Format(“{0}”, k + 4);
}
//设置Excel可见
excelApp.Visible = true;
}
写入按钮函数:
private void button1_Click(object sender, EventArgs e)
{
ToExcel(“方式3″);
}
结果:
连接字符串的问百题吧,度
string StrConExcel2007 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0;HDR=YES\""
HDR=YES的时候,第一知行会被读成列头
如果你道第一行就是数专据的话,请设置属HDR=NO
错误提示说的很清楚啊 “它已经zd被别的用户以独占方式打开,或没有查看数据的权限回”
1. 给你要打开的excel文件everyone权限, 或以管理员权答限运行你的程序
2. 确保没有其他程序正在使用这个excel文件
不可能慢.我曾经读7a64e59b9ee7ad94366过一个10万行的excel,一个sheet都装不下.都是分页装的.也是一瞬间就读进内存了.以下是读excel到DataTable中的方法
public DataTable GetExcel(string Path)//Excel导入到DataSet
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties='Excel 8.0;HDR=YES;IMEX=1';";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter myCommand = null;
DataTable dt = new DataTable();
int result = 1;
try
{
conn.Open();
DataTable dtName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
string strExcel = "Select * from [" + dtName.Rows[0]["TABLE_NAME"].ToString() + "]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
myCommand.Fill(dt);
conn.Close();
}
catch (Exception ex)
{
result = 2;
}
finally
{
conn.Close();
}
if (result == 2) return null;
else return dt;
}
获取第一行第一列
DataTable dt = GetExcel(excelpath);
dt.Rows[0][0].ToString();