创建Excel文件:
private void CreatExcel(string path)
{
MSExcel.Application excelApp = new MSExcel.Application(); //Excel应用程序变量
MSExcel.Workbook excelDoc; //Excel文档变量
object missing = System.Reflection.Missing.Value;
try
{
if (!File.Exists((string)path))
{
Object Nothing = Missing.Value;
excelDoc = excelApp.Workbooks.Add(Nothing);
//使用第一个工作表作为插入数据的工作表
MSExcel.Worksheet ws = (MSExcel.Worksheet)excelDoc.Sheets[1];
MSExcel.Range excelRange = ws.get_Range(ws.Cells[1, 1], ws.Cells[5, 6]);
excelRange.EntireColumn.AutoFit();//Excel选择区域自动调整宽度
//声明一个MSExcel.Range 类型的变量r
MSExcel.Range c1 = (MSExcel.Range)ws.Cells[1, 1]; //单元格赋值
c1.Value2 = "产品型号";
MSExcel.Range c2 = (MSExcel.Range)ws.Cells[1, 2];
c2.Value2 = "SN号";
MSExcel.Range r1;
r1 = ws.get_Range(ws.Cells[2, 1], ws.Cells[3, 1]); //取得合并的区域
r1.MergeCells = true;
object format = MSExcel.XlFileFormat.xlWorkbookNormal;
excelDoc.SaveAs(path, format, Nothing, Nothing, Nothing, Nothing, MSExcel.XlSaveAsAccessMode.xlExclusive, Nothing, Nothing, Nothing, Nothing, Nothing);
//关闭excelDoc文档对象
excelDoc.Close(Nothing, Nothing, Nothing);
//关闭excelApp组件对象
excelApp.Quit();
//System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
//excelApp = null;
}
}
catch (Exception CreateExcelEX)
{
MessageBox.Show("创建EXCEL文件失败:" + CreateExcelEX.Message);
}
}
编辑Excel文件:
private void SaveDataToExcel(string path)
{
//Excel应用程序变量
MSExcel.Application excelApp = new MSExcel.Application();
object missing = System.Reflection.Missing.Value;
MSExcel.Workbook wb = excelApp.Application.Workbooks.Open(path, missing, missing, missing, missing, missing,missing, missing, missing, missing, missing, missing, missing, missing, missing);
excelApp.Application.DisplayAlerts = false;//不显示提示对话框
//取得第一个工作薄
MSExcel.Worksheet wk = (MSExcel.Worksheet)wb.Worksheets.get_Item(1);
int rowCount = wk.UsedRange.Cells.Rows.Count;//读取excel数据行数
try
{
//存入测试时间
MSExcel.Range t1 = (MSExcel.Range)wk.Cells[rowCount + 1, 2];
t1.Value2 = DateTime.Now.ToString();
wb.Save();
//wk = null;
wb.Close(false, missing, missing);
//excelApp.Quit();
//System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
//excelApp = null;
}
catch (Exception ExcelEX)
{
MessageBox.Show("Excel保存出错:" + ExcelEX.Message);
}
}
按照模板保存数据:
private void SaveModel_TestData(string modelpath)
{
//需要添加 Microsoft.Office.Interop.Excel引用
Microsoft.Office.Interop.Excel.Application myexcel = new Microsoft.Office.Interop.Excel.Application();
myexcel.Visible = false;
myexcel.UserControl = true;
string path = ModelPath + "\\" + "Template.xls";
Microsoft.Office.Interop.Excel.Workbooks workbooks = myexcel.Workbooks;
Microsoft.Office.Interop.Excel._Workbook workbook = workbooks.Add(path);
//加载模板
Microsoft.Office.Interop.Excel.Sheets sheets = workbook.Sheets;
Microsoft.Office.Interop.Excel._Worksheet worksheet = (Microsoft.Office.Interop.Excel._Worksheet)sheets.get_Item(3); //第3个工作薄。
if (worksheet == null) return; //工作薄中没有工作表.
try
{
worksheet.Cells[2, 8] = txt_UserID.Text.Trim();
}
catch (Exception)
{
workbook.Close(false, Type.Missing, Type.Missing);
myexcel.Quit();
return;
}
object Nothing = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Excel.Workbook workbook1 = myexcel.Workbooks.Add(Nothing);
Microsoft.Office.Interop.Excel.Worksheet worksheet1 = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Sheets["Sheet2"];//打开Sheet2
worksheet1.Copy(workbook1.Sheets["Sheet1"], Type.Missing);//复制模板Sheet1内容
workbook.Close(false, Type.Missing, Type.Missing);
workbook1.SaveAs(modelpath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
workbook1.Close(false, Type.Missing, Type.Missing);
myexcel.Quit();
}
从datagridview中到出Excel数据:
private void ExportExcel(string fileName, DataGridView myDGV)
{
string saveFileName = "";
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "Excel文件|*.xls";
saveDialog.FileName = fileName;
saveDialog.ShowDialog();
saveFileName = saveDialog.FileName;
if (saveFileName.IndexOf(":") < 0) return; //被点了取消
Microsoft.Office.Interop.Excel.Application xlApp= new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");
return;
}
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
//写入标题
for (int i = 0; i < myDGV.ColumnCount; i++)
{
worksheet.Cells[1, i + 1] = myDGV.Columns[i].HeaderText;
}
//写入数值
for (int r = 0; r < myDGV.Rows.Count; r++)
{
for (int i = 0; i < myDGV.ColumnCount; i++)
{
worksheet.Cells[r + 2, i + 1] = myDGV.Rows[r].Cells[i].Value;
}
System.Windows.Forms.Application.DoEvents();
}
worksheet.Columns.EntireColumn.AutoFit();//列宽自适应
if (saveFileName != "")
{
try
{
//int FormatNum;//保存excel文件的格式
//string Version;//excel版本号
//Version = xlApp.Version;//获取你使用的excel 的版本号
//if (Convert.ToDouble(Version) < 12)//You use Excel 97-2003
//{
//FormatNum = -4143;
//}
//else//you use excel 2007 or later
//{
//FormatNum = 56;
//}
workbook.Saved = true;
workbook.SaveCopyAs(saveFileName);
}
catch (Exception ex)
{
MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);
}
}
xlApp.Quit();
GC.Collect();//强行销毁
MessageBox.Show("文件: " + fileName + ".xls 保存成功", "信息提示",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
Excel与 DataGridView互转:
// DataGridView转Excel
private void ExportExcel(string fileName, DataGridView myDGV)
{
string saveFileName = "";
SaveFileDialog saveDialog = new SaveFileDialog();
saveDialog.DefaultExt = "xls";
saveDialog.Filter = "Excel文件|*.xls";
saveDialog.FileName = fileName;
saveDialog.ShowDialog();
saveFileName = saveDialog.FileName;
if (saveFileName.IndexOf(":") < 0) return; //被点了取消
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");
return;
}
Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
//写入标题
for (int i = 0; i < myDGV.ColumnCount; i++)
{
worksheet.Cells[1, i + 1] = myDGV.Columns[i].HeaderText;
}
//写入数值
for (int r = 0; r < myDGV.Rows.Count; r++)
{
for (int i = 0; i < myDGV.ColumnCount; i++)
{
worksheet.Cells[r + 2, i + 1] = myDGV.Rows[r].Cells[i].Value;
}
System.Windows.Forms.Application.DoEvents();
}
worksheet.Columns.EntireColumn.AutoFit();//列宽自适应
if (saveFileName != "")
{
try
{
// int FormatNum;//保存excel文件的格式
// string Version;//excel版本号
// Version = xlApp.Version;//获取你使用的excel 的版本号
// if (Convert.ToDouble(Version) < 12)//You use Excel 97-2003
// {
//FormatNum = -4143;
// }
//else//you use excel 2007 or later
// {
//FormatNum = 56;
// }
workbook.Saved = true;
workbook.SaveCopyAs(saveFileName);
}
catch (Exception ex)
{
MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);
}
}
xlApp.Quit();
GC.Collect();//强行销毁
MessageBox.Show("文件: " + fileName + ".xls 保存成功", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
// Excel转DataGridView
public void EcxelToDataGridView(string filePath, DataGridView dgv)
{
//根据路径打开一个Excel文件并将数据填充到DataSet中
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath + ";Extended Properties ='Excel 8.0;HDR=NO;IMEX=1'";//HDR=YES 有两个值:YES/NO,表示第一行是否字段名,默认是YES,第一行是字段名
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;
strExcel = "select * from [sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
ds = new DataSet();
myCommand.Fill(ds, "table1");
dgv.DataSource = ds.Tables[0].DefaultView;
dgv.Columns[0].HeaderText= "Parm";
dgv.Rows.RemoveAt(0);
}