|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。excelC#СExcel办法有多No经常使用的依照Microsoft的办法以下:
1p"UseAutomationtoTransferDataCellbyCell"
2p"UseAutomationtoTransferanArrayofDatatoaRangeonaWorksheet"
3p"UseAutomationtoTransferanADORecordsettoaWorksheetRange"
4p"UseAutomationtoCreateaQueryTableonaWorksheet"
5p"UsetheClipboard"
6p"CreateaDelimitedTextFilethatExcelCanParseintoRowsandColumns"
7p"TransferDatatoaWorksheetUsingADO.NET"
在此自己次要利用第4N办法:即使用Excel的QueryTableС龊A
要使用Excel的QueryTable的办法o起首必要援用Excel。@我就未几f了。
第二步就是新增一窗w文件o楹纹鹨o只在窗w上加一button按o。在ButtonClick事务中到场操纵的代a。整操纵o我只在一中Fo源a附N以下(office2003)s
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceWindowsApplication3
{
publicpartialclassForm1:Form
{
privateMicrosoft.Office.Interop.Excel.Applicationm_objExcel=null;
privateMicrosoft.Office.Interop.Excel.Workbooksm_objBooks=null;
privateMicrosoft.Office.Interop.Excel._Workbookm_objBook=null;
privateMicrosoft.Office.Interop.Excel.Sheetsm_objSheets=null;
privateMicrosoft.Office.Interop.Excel._Worksheetm_objSheet=null;
privateMicrosoft.Office.Interop.Excel.Rangem_objRange=null;
//privateMicrosoft.Office.Interop.Excel.Fontm_objFont=null;
//privateMicrosoft.Office.Interop.Excel.QueryTablesm_objQryTables=null;
privateMicrosoft.Office.Interop.Excel._QueryTablem_objQryTable=null;
//Frequenty-usedvariableforoptionalarguments.
privateobjectm_objOpt=System.Reflection.Missing.Value;
//DataBase-usedvariable
privateSystem.Data.SqlClient.SqlConnectionsqlConn=null;
privatestringstrConnect="DataSource=192.168.168.253;Password=SHS;UserID=SHS;InitialCatalog=TEST_KM_ERP";
privateSystem.Data.SqlClient.SqlCommandsqlCmd=null;
//Sheetsvariable
privatedoubledbSheetSize=65535;//thehightlimitnumberinonesheet
privateintintSheetTotalSize=0;//totalrecordcandiviedsheetnumber
privatedoubledbTotalSize=0;//recordtotalnumber
publicForm1()
{
InitializeComponent();
}
privateintGetTotalSize()
{
sqlConn=newSystem.Data.SqlClient.SqlConnection(strConnect);
sqlCmd=newSystem.Data.SqlClient.SqlCommand("SelectCount(*)FromPD_WORKBIL_MST",sqlConn);
sqlConn.Open();
dbTotalSize=(int)sqlCmd.ExecuteScalar();
sqlConn.Close();
return(int)Math.Ceiling(dbTotalSize/this.dbSheetSize);
}
privatevoidDeclareExcelApp()
{
m_objExcel=newMicrosoft.Office.Interop.Excel.Application();
m_objBooks=(Microsoft.Office.Interop.Excel.Workbooks)m_objExcel.Workbooks;
m_objBook=(Microsoft.Office.Interop.Excel._Workbook)(m_objBooks.Add(m_objOpt));
m_objSheets=(Microsoft.Office.Interop.Excel.Sheets)m_objBook.Worksheets;
intSheetTotalSize=GetTotalSize();
if(intSheetTotalSize<=3)
{
if(this.dbTotalSize<=this.dbSheetSize)
{
this.ExportDataByQueryTable(1,false);
return;
}
elseif(this.dbTotalSize<=this.dbSheetSize*2)
{
this.ExportDataByQueryTable(1,false);
this.ExportDataByQueryTable(2,true);
return;
}
else
{
this.ExportDataByQueryTable(1,false);
this.ExportDataByQueryTable(2,true);
this.ExportDataByQueryTable(3,true);
return;
}
}
for(inti=3;i<intSheetTotalSize;i++)
{
m_objSheets.Add(m_objOpt,m_objSheets.get_Item(i),m_objOpt,m_objOpt);
}
ExportDataByQueryTable(1,false);
for(inti=2;i<=m_objSheets.Count;i++)
{
ExportDataByQueryTable(i,true);
}
}
privatevoidSaveExcelApp()
{
stringexcelFileName=string.Empty;
SaveFileDialogsf=newSaveFileDialog();
sf.Filter="*.xls|*.*";
if(sf.ShowDialog()==DialogResult.OK)
{
excelFileName=sf.FileName;
}
else
{
return;
}
m_objBook.SaveAs(excelFileName,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,
Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt);
}
privatevoidExportDataByQueryTable(intintSheetNumber,boolblIsMoreThan)
{
stringstrQuery=string.Empty;
if(blIsMoreThan)
{
strQuery="SelectTop"+
this.dbSheetSize+"*FromPD_WORKBIL_MSTWhereNotCMPIDIn(SelectTop"+
dbSheetSize*(intSheetNumber-1)+"CMPIDFromPD_WORKBIL_MST)";
}
else
{
strQuery="SelectTop"+this.dbSheetSize+"*FromPD_WORKBIL_MST";
}
m_objSheet=(Microsoft.Office.Interop.Excel._Worksheet)(m_objSheets.get_Item(intSheetNumber));
m_objSheet.get_Range("A1",m_objOpt).set_Value(m_objOpt,"中文y一");
m_objSheet.get_Range("B1",m_objOpt).set_Value(m_objOpt,"中文y二");
m_objSheet.get_Range("C1",m_objOpt).set_Value(m_objOpt,"中文y三");
m_objSheet.get_Range("D1",m_objOpt).set_Value(m_objOpt,"中文y四");
m_objSheet.get_Range("E1",m_objOpt).set_Value(m_objOpt,"中文y五");
m_objRange=m_objSheet.get_Range("A2",m_objOpt);
m_objQryTable=m_objSheet.QueryTables.Add("OLEDB;Provider=SQLOLEDB.1;"+strConnect,m_objRange,strQuery);
m_objQryTable.RefreshStyle=Microsoft.Office.Interop.Excel.XlCellInsertionMode.xlInsertEntireRows;
m_objQryTable.FieldNames=false;
m_objQryTable.Refresh(false);
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
DeclareExcelApp();
SaveExcelApp();
}
}
}
利用office2000的o仿佛有些分歧o榻o人人一比^o也⒃创a附N以下s
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceWindowsApplication2
{
publicpartialclassForm1:Form
{
Excel.Rangem_objRange=null;
Excel.Applicationm_objExcel=null;
Excel.Workbooksm_objBooks=null;
Excel._Workbookm_objBook=null;
Excel.Sheetsm_objSheets=null;
Excel._Worksheetm_objSheet=null;
Excel.QueryTablem_objQryTable=null;
objectm_objOpt=System.Reflection.Missing.Value;
//DataBase-usedvariable
privateSystem.Data.SqlClient.SqlConnectionsqlConn=null;
privatestringstrConnect="DataSource=192.168.168.253;Password=SHS;UserID=SHS;InitialCatalog=TEST_KM_ERP";
privateSystem.Data.SqlClient.SqlCommandsqlCmd=null;
//Sheetsvariable
privatedoubledbSheetSize=65535;//thehightlimitnumberinonesheet
privateintintSheetTotalSize=0;//totalrecordcandiviedsheetnumber
privatedoubledbTotalSize=0;//recordtotalnumber
publicForm1()
{
InitializeComponent();
}
privateintGetTotalSize()
{
sqlConn=newSystem.Data.SqlClient.SqlConnection(strConnect);
sqlCmd=newSystem.Data.SqlClient.SqlCommand("SelectCount(*)FromPD_WORKBIL_MST",sqlConn);
sqlConn.Open();
dbTotalSize=(int)sqlCmd.ExecuteScalar();
sqlConn.Close();
return(int)Math.Ceiling(dbTotalSize/this.dbSheetSize);
}
privatevoidDeclareExcelApp()
{
m_objExcel=newExcel.ApplicationClass();
m_objBooks=(Excel.Workbooks)m_objExcel.Workbooks;
m_objBook=(Excel._Workbook)(m_objBooks.Add(m_objOpt));
m_objSheets=(Excel.Sheets)m_objBook.Worksheets;
intSheetTotalSize=GetTotalSize();
if(intSheetTotalSize<=3)
{
if(this.dbTotalSize<=this.dbSheetSize)
{
this.ExportDataByQueryTable(1,false);
return;
}
elseif(this.dbTotalSize<=this.dbSheetSize*2)
{
this.ExportDataByQueryTable(1,false);
this.ExportDataByQueryTable(2,true);
return;
}
else
{
this.ExportDataByQueryTable(1,false);
this.ExportDataByQueryTable(2,true);
this.ExportDataByQueryTable(3,true);
return;
}
}
for(inti=3;i<intSheetTotalSize;i++)
{
m_objSheets.Add(m_objOpt,m_objSheets.get_Item(i),m_objOpt,m_objOpt);
}
ExportDataByQueryTable(1,false);
for(inti=2;i<=m_objSheets.Count;i++)
{
ExportDataByQueryTable(i,true);
}
}
privatevoidSaveExcelApp()
{
stringexcelFileName=string.Empty;
SaveFileDialogsf=newSaveFileDialog();
sf.Filter="*.xls|*.*";
if(sf.ShowDialog()==DialogResult.OK)
{
excelFileName=sf.FileName;
}
else
{
return;
}
m_objBook.SaveAs(excelFileName,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,
Excel.XlSaveAsAccessMode.xlNoChange,m_objOpt,m_objOpt,m_objOpt,m_objOpt);
}
privatevoidExportDataByQueryTable(intintSheetNumber,boolblIsMoreThan)
{
stringstrQuery=string.Empty;
if(blIsMoreThan)
{
strQuery="SelectTop"+
this.dbSheetSize+"*FromPD_WORKBIL_MSTWhereNotCMPIDIn(SelectTop"+
dbSheetSize*(intSheetNumber-1)+"CMPIDFromPD_WORKBIL_MST)";
}
else
{
strQuery="SelectTop"+this.dbSheetSize+"*FromPD_WORKBIL_MST";
}
m_objSheet=(Excel._Worksheet)(m_objSheets.get_Item(intSheetNumber));
m_objSheet.Cells[1,1]="中文y一";
m_objSheet.Cells[1,2]="中文y二";
m_objSheet.Cells[1,3]="中文y三";
m_objSheet.Cells[1,4]="中文y四";
m_objSheet.Cells[1,5]="中文y五";
m_objRange=m_objSheet.get_Range("A2",m_objOpt);
m_objQryTable=m_objSheet.QueryTables.Add("OLEDB;Provider=SQLOLEDB.1;"+strConnect,m_objRange,strQuery);
m_objQryTable.RefreshStyle=Excel.XlCellInsertionMode.xlInsertEntireRows;
m_objQryTable.FieldNames=false;
m_objQryTable.Refresh(false);
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
DeclareExcelApp();
SaveExcelApp();
}
}
}
在本篇中o是13f多l分多SheetС觥H绻愕C器也许像我@:P4CPU,1G却娴脑。全体С霭ū4嬉簿褪20秒摆布就能够全体弄定。
也S人人懈玫姆椒Fog迎列位交换u
另外,小型软件代码重用价值低,没有必要跨平台;大型软件,有严格的规划、部署,不可以随意跨平台。 |
|