PDA

View Full Version : مبتدی: ساخت فایل اکسل



kolibri
جمعه 28 اسفند 1394, 01:29 صبح
سلام؛
برای ایجاد یک فایل اکسل و وارد کردن اطلاعات از چه روشی استفاده کنم؟!
همینطور چگونه با کد در آن نمودار ایجاد کنم؟!

حسین.کاظمی
جمعه 28 اسفند 1394, 04:22 صبح
دوست عزیزم این سوالت بسیاااااااااااااااااااااا ااااااار بسیاااااااااااااااااااار تکراری است
کافی در همین تالار جست و جو کنید

kolibri
جمعه 28 اسفند 1394, 06:07 صبح
جست و جو کردم!
احتمالا کلمات کلیدی را اشتباه به کار بردم!!
مجدد سرچ می کنم!

prans_tork
شنبه 29 اسفند 1394, 05:36 صبح
سلام؛
برای ایجاد یک فایل اکسل و وارد کردن اطلاعات از چه روشی استفاده کنم؟!
همینطور چگونه با کد در آن نمودار ایجاد کنم؟!

برای ایجاد فایل اکسل: (من اطلاعات موجود در گرید ویو رو به توابع ارسال کردم برای ساخت فایل و منظور از object DgvName در تابع ساخت فایل همون گرید مورد نظره:

ابتدا Microsoft.Office.Interop.Excel رو به ریسورس هات اضافه کن و بعد:



using Excel = Microsoft.Office.Interop.Excel;


private void MSExportExcel2003_Click(object sender, EventArgs e)
{
if (dgvPatNext.Rows.Count == 0)
{
MessageBoxEx.EnableGlass = false;
MessageBoxEx.Show("اطلاعاتی برای صدور به فایل اکسل وجود ندارد");
return;
}
try
{
//string FileName = Path.GetFileNameWithoutExtension(DBpathW);
string FileName = "اطلاعات ویزیت بیماران";
string SaveFilePath = string.Empty;
SaveFilePath = GetSavePath(FileName, "2003");
if (SaveFilePath != string.Empty)
{
ExportToExel(SaveFilePath, dgvPatNext, "اطلاعات ویزیت بیماران");
}
}
catch (Exception)
{
MessageBoxEx.EnableGlass = false;
MessageBoxEx.Show("خطا در ساخت فایل اکسل", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
}
}

public string GetSavePath(string FileName, string ExcelVersion)
{
string FileExtention = string.Empty;
string ExcelFilePath = string.Empty;
string FilterType = string.Empty;
//SFD.Filter = "Excel Worksheets 2003 (.xls)|*.xls|Excel Worksheets 2007 (.xlsx)|*.xlsx";
SFD.Title = "مسیر ذخیره فایل را مشخص کنید";
if (ExcelVersion == "2003")
{
FileExtention = ".xls";
}
else
{
FileExtention = ".xlsx";
}
FilterType = "Excel " + ExcelVersion + "(*" + FileExtention + ")|*." + FileExtention;
SFD.FileName = FileName + FileExtention;
SFD.InitialDirectory = System.Environment.GetFolderPath(Environment.Speci alFolder.MyDocuments);
SFD.Filter = FilterType;
//SFD.CheckFileExists = true;
SFD.CheckPathExists = true;
//SFD.OverwritePrompt = true;
if (SFD.ShowDialog() == DialogResult.OK)
{
ExcelFilePath = SFD.FileName;
}
SFD.Dispose();
//MessageBox.Show(ExcelFilePath);
return ExcelFilePath;
}

private void ExportToExel(string FileNameAndPath, object DgvName, string SheetName)
{
object misValue = System.Reflection.Missing.Value;
// creating Excel Application
Excel._Application app = new Excel.Application();


// creating new WorkBook within Excel application
Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);


// creating new Excelsheet in workbook
Excel._Worksheet worksheet = null;


// see the excel sheet behind the program




// get the reference of first sheet. By default its name is Sheet1.
// store its reference to worksheet
worksheet = workbook.Sheets["Sheet1"];


worksheet = workbook.ActiveSheet;


// changing the name of active sheet
worksheet.Name = SheetName;


// storing header part in Excel
for (int i = 1; i < ((DataGridView)DgvName).Columns.Count + 1; i++)
{
worksheet.Cells[1, i] = ((DataGridView)DgvName).Columns[i - 1].HeaderText;
}


// storing Each row and column value to excel sheet
for (int i = 0; i < ((DataGridView)DgvName).Rows.Count; i++)
{
for (int j = 0; j < ((DataGridView)DgvName).Columns.Count; j++)
{
worksheet.Cells[i + 2, j + 1] = ((DataGridView)DgvName).Rows[i].Cells[j].Value.ToString();
}
}


// save the application


workbook.SaveAs(FileNameAndPath, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
app.Visible = true;


// Exit from the application
//app.Quit();
}

kolibri
شنبه 29 اسفند 1394, 09:54 صبح
برای ایجاد فایل اکسل: (من اطلاعات موجود در گرید ویو رو به توابع ارسال کردم برای ساخت فایل و منظور از object DgvName در تابع ساخت فایل همون گرید مورد نظره:

ابتدا Microsoft.Office.Interop.Excel رو به ریسورس هات اضافه کن و بعد:



using Excel = Microsoft.Office.Interop.Excel;


private void MSExportExcel2003_Click(object sender, EventArgs e)
{
if (dgvPatNext.Rows.Count == 0)
{
MessageBoxEx.EnableGlass = false;
MessageBoxEx.Show("اطلاعاتی برای صدور به فایل اکسل وجود ندارد");
return;
}
try
{
//string FileName = Path.GetFileNameWithoutExtension(DBpathW);
string FileName = "اطلاعات ویزیت بیماران";
string SaveFilePath = string.Empty;
SaveFilePath = GetSavePath(FileName, "2003");
if (SaveFilePath != string.Empty)
{
ExportToExel(SaveFilePath, dgvPatNext, "اطلاعات ویزیت بیماران");
}
}
catch (Exception)
{
MessageBoxEx.EnableGlass = false;
MessageBoxEx.Show("خطا در ساخت فایل اکسل", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
}
}

public string GetSavePath(string FileName, string ExcelVersion)
{
string FileExtention = string.Empty;
string ExcelFilePath = string.Empty;
string FilterType = string.Empty;
//SFD.Filter = "Excel Worksheets 2003 (.xls)|*.xls|Excel Worksheets 2007 (.xlsx)|*.xlsx";
SFD.Title = "مسیر ذخیره فایل را مشخص کنید";
if (ExcelVersion == "2003")
{
FileExtention = ".xls";
}
else
{
FileExtention = ".xlsx";
}
FilterType = "Excel " + ExcelVersion + "(*" + FileExtention + ")|*." + FileExtention;
SFD.FileName = FileName + FileExtention;
SFD.InitialDirectory = System.Environment.GetFolderPath(Environment.Speci alFolder.MyDocuments);
SFD.Filter = FilterType;
//SFD.CheckFileExists = true;
SFD.CheckPathExists = true;
//SFD.OverwritePrompt = true;
if (SFD.ShowDialog() == DialogResult.OK)
{
ExcelFilePath = SFD.FileName;
}
SFD.Dispose();
//MessageBox.Show(ExcelFilePath);
return ExcelFilePath;
}

private void ExportToExel(string FileNameAndPath, object DgvName, string SheetName)
{
object misValue = System.Reflection.Missing.Value;
// creating Excel Application
Excel._Application app = new Excel.Application();


// creating new WorkBook within Excel application
Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);


// creating new Excelsheet in workbook
Excel._Worksheet worksheet = null;


// see the excel sheet behind the program




// get the reference of first sheet. By default its name is Sheet1.
// store its reference to worksheet
worksheet = workbook.Sheets["Sheet1"];


worksheet = workbook.ActiveSheet;


// changing the name of active sheet
worksheet.Name = SheetName;


// storing header part in Excel
for (int i = 1; i < ((DataGridView)DgvName).Columns.Count + 1; i++)
{
worksheet.Cells[1, i] = ((DataGridView)DgvName).Columns[i - 1].HeaderText;
}


// storing Each row and column value to excel sheet
for (int i = 0; i < ((DataGridView)DgvName).Rows.Count; i++)
{
for (int j = 0; j < ((DataGridView)DgvName).Columns.Count; j++)
{
worksheet.Cells[i + 2, j + 1] = ((DataGridView)DgvName).Rows[i].Cells[j].Value.ToString();
}
}


// save the application


workbook.SaveAs(FileNameAndPath, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
app.Visible = true;


// Exit from the application
//app.Quit();
}





تشکر بابت راهنمایی خوبتون.
اما ممکن هست من رو در مورد روش نام گذاری و آدرس دهی راهنمایی بفرمایید؟
من می خوام آدرس رو به صورت دستی ایجاد کنم. برای مثال:
string FilePath = System.IO.Directory.GetCurrentDirectory()+"\\gozarsh";
و نام رو هم می خوام زمان تهیه گزارش قرار بدهم.
شما در خط آخر از FileNameAndPath استفاده کردید. میشه بهم توضیح بدید؟
تشکر

prans_tork
یک شنبه 01 فروردین 1395, 02:55 صبح
تشکر بابت راهنمایی خوبتون.
اما ممکن هست من رو در مورد روش نام گذاری و آدرس دهی راهنمایی بفرمایید؟
من می خوام آدرس رو به صورت دستی ایجاد کنم. برای مثال:
string FilePath = System.IO.Directory.GetCurrentDirectory()+"\\gozarsh";
و نام رو هم می خوام زمان تهیه گزارش قرار بدهم.
شما در خط آخر از FileNameAndPath استفاده کردید. میشه بهم توضیح بدید؟
تشکر



FileNameAndPath همون خروجی تابع
GetSavePath هست که شامل مسیر و نام فایل ای هست که قراره ذخیره بشه و به عنوان یک پارامتر برای تابع ExportToExel ارسالش کردم

در واقع ابتدا از کاربر با تابع GetSavePath مسیر مورد نظرشو خواستم و نام فایل رو که همون فایل نام اکسل مورد نظر هست داخل همین تابع به مسیر مورد نظر کاربر اضافه کردم و خروجی این تابع از نوع string به تابع ExportToExel به عنوان یک پارامتر ارسال کردم
درواقع اگر شما قد دادن مسیر و نام به صورت دستی رو دارید، نیازی به تابع GetSavePath ندارید و برای شما:




"FileNameAndPath =
System.IO.Directory.GetCurrentDirectory()+"\\gozar sh" + "\\FileName.xls



در ضمن دوتا نکته:

SFD در تابع GetSavePath در واقع نام saveFileDialog هست که روی فرم قرار دادم

و دوم اینکه در ورتی که این کد رو در گروژتون کپی کردید عبارات MessageBoxEx رو به MessageBox تغییر بدید. چون من از کامپوننت DotNetBar استفاده کردم و این مسیج باکس مربوط به اونه

kolibri
یک شنبه 01 فروردین 1395, 06:24 صبح
FileNameAndPath همون خروجی تابع
GetSavePath هست که شامل مسیر و نام فایل ای هست که قراره ذخیره بشه و به عنوان یک پارامتر برای تابع ExportToExel ارسالش کردم

در واقع ابتدا از کاربر با تابع GetSavePath مسیر مورد نظرشو خواستم و نام فایل رو که همون فایل نام اکسل مورد نظر هست داخل همین تابع به مسیر مورد نظر کاربر اضافه کردم و خروجی این تابع از نوع string به تابع ExportToExel به عنوان یک پارامتر ارسال کردم
درواقع اگر شما قد دادن مسیر و نام به صورت دستی رو دارید، نیازی به تابع GetSavePath ندارید و برای شما:




"FileNameAndPath =
System.IO.Directory.GetCurrentDirectory()+"\\gozar sh" + "\\FileName.xls



در ضمن دوتا نکته:

SFD در تابع GetSavePath در واقع نام saveFileDialog هست که روی فرم قرار دادم

و دوم اینکه در ورتی که این کد رو در گروژتون کپی کردید عبارات MessageBoxEx رو به MessageBox تغییر بدید. چون من از کامپوننت DotNetBar استفاده کردم و این مسیج باکس مربوط به اونه

قبلا این رو تست کردم:
string FileNameAndPath = System.IO.Directory.GetCurrentDirectory() + "\\gozaresh" + "\\FileName.xls";

ولی خطا بهم میده:An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in WindowsFormsApplication3.exe


Additional information: Microsoft Excel cannot access the file 'C:\Users\rohollah\Documents\Visual Studio 2015\Projects\WindowsFormsApplication3\WindowsForm sApplication3\bin\Debug\gozaresh\'. There are several possible reasons:






• The file name or path does not exist.


• The file is being used by another program.


• The workbook you are trying to save has the same name as a currently open workbook.

prans_tork
یک شنبه 01 فروردین 1395, 06:32 صبح
قبلا این رو تست کردم:
string FileNameAndPath = System.IO.Directory.GetCurrentDirectory() + "\\gozaresh" + "\\FileName.xls";

ولی خطا بهم میده:An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in WindowsFormsApplication3.exe


Additional information: Microsoft Excel cannot access the file 'C:\Users\rohollah\Documents\Visual Studio 2015\Projects\WindowsFormsApplication3\WindowsForm sApplication3\bin\Debug\gozaresh\'. There are several possible reasons:






• The file name or path does not exist.


• The file is being used by another program.


• The workbook you are trying to save has the same name as a currently open workbook.




اولا ازین GetCurrentDirectory() استفاده نکنید
چرا که میشه همونجایی که فایل exe شما داره اجرا میشه و ممکنه دسترسی نداشته باشید
بهتره مسیر رو از کاربر بگیرید و یا یه جایی رو مسیر بدید که مطمعنا دسترسی دارید بهش. مثل MyDocument یا روی یکی از درایو هاتون
اما بازم میگم بهتر اینه که از کاربر بگیرید مسیر رو.

در ضمن قطعه کدی که خطا داره رو اینجا قرار بدید تا بیشتر بشه کمکتون کرد