TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
Yili Li
NA
9
22.8k
Read from excel and save problem
Oct 7 2010 12:54 PM
My problem is when I read from a excel and make some change there, I can not save those changes.
my code lists as below
My logic is: if the excel is not exist, I am going to "create" a spreadsheet and there is no problem here.
The problem is here, if the object file is already exist. I am going to "Open" the excel spreadsheet and make some change inside.
After that, I want to save the change to the original document. But it doesn't work.
My rCount is a static parameter, I have decleared it in other place.
private void insertReport1(DateTime TimeFrame)
{
SqlConnection MyConnection = new SqlConnection();
string filePath = this.textBox3.Text;
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
object misValue = System.Reflection.Missing.Value;
xlApp = new Excel.ApplicationClass();
// FileInfo destination = new FileInfo(filePath);
// StreamWriter Tex;
SqlCommand cmd;
if (File.Exists(filePath))
{
xlWorkBook = xlApp.Workbooks.Open(@filePath, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, true, misValue, misValue, misValue, misValue, misValue);
//xlWorkBook = xlApp.Workbooks.Open(@filePath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
// Tex = destination.AppendText();
}else
{
xlWorkBook = xlApp.Workbooks.Add(misValue);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
xlWorkSheet.Cells[rCount, 1] = "Date";
xlWorkSheet.Cells[rCount, 2] = "Loc_ID";
xlWorkSheet.Cells[rCount, 3] = "CONS_UPC";
xlWorkSheet.Cells[rCount, 4] = "WD_Code";
xlWorkSheet.Cells[rCount, 5] = "ScnQty";
xlWorkSheet.Cells[rCount, 6] = "Rtl";
xlWorkSheet.Cells[rCount++, 7] = "prod_Desc";
// Tex = destination.CreateText();
// Tex.WriteLine("Date".PadRight(30, ' ') + "Loc_ID".PadRight(20, ' ') + "CONS_UPC".PadRight(20, ' ') + "WD_Code".PadRight(20, ' ') + "ScnQty".PadRight(20, ' ') + "Rtl".PadRight(20, ' ') + "prod_Desc".PadRight(20, ' '));
}
string sqlconStr = global::test.Properties.Settings.Default.testConnectionString;
try
{
MyConnection.ConnectionString = sqlconStr;
MyConnection.Open();
}
catch (Exception)
{
if (MyConnection != null)
MyConnection.Dispose();
MessageBox.Show("Connecting failed", "error message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
string[] date = TimeFrame.ToString().Split(char.Parse(" "))[0].Split(char.Parse("/"));
if (date[0].Length < 2)
date[0] = "0" + date[0];
if (date[1].Length < 2)
date[1] = "0" + date[1];
string tableName = date[2] + "_" + date[0] + "_" + date[1];
string sqlPart1 = "SELECT Date, Loc_ID, CONS_UPC, WD_Code, ScnQty, Rtl, Prod_Desc From [";
string conditionStr = "";
string[] UPCs = this.textBox1.Lines;
if (this.textBox2.Text.Trim() != "")
{
string[] Stores = this.textBox2.Lines;
foreach (string UPC in UPCs)
{
foreach (string Store in Stores)
{
conditionStr = conditionStr + " OR " + "(CONS_UPC = " + UPC.Trim() + ") AND ( Loc_ID = " + Store.Trim() + ")";
}
}
}
else
{
foreach (string UPC in UPCs)
{
conditionStr = conditionStr + " OR " + "(CONS_UPC = " + UPC.Trim() + ")";
}
}
conditionStr = conditionStr.Substring(3, conditionStr.Length - 3);
string sqlCmd = sqlPart1 + tableName + "] Where " + conditionStr + " ORDER BY CONS_UPC, Loc_ID";
cmd = new SqlCommand(sqlCmd, MyConnection);
try
{
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
string DateInfo = reader["Date"].ToString();
string Loc_ID = reader["Loc_ID"].ToString();
string CONS_UPC = reader["CONS_UPC"].ToString();
string WD_Code = reader["WD_Code"].ToString();
string ScnQty = reader["ScnQty"].ToString();
string Rtl = reader["Rtl"].ToString();
string prod_Desc = reader["Prod_Desc"].ToString();
xlWorkSheet.Cells[rCount, 1] =DateInfo;
xlWorkSheet.Cells[rCount, 2] = Loc_ID;
xlWorkSheet.Cells[rCount, 3] = CONS_UPC;
xlWorkSheet.Cells[rCount, 4] = WD_Code;
xlWorkSheet.Cells[rCount, 5] = ScnQty;
xlWorkSheet.Cells[rCount, 6] = Rtl;
xlWorkSheet.Cells[rCount++, 7] = prod_Desc;
// xlWorkBook.Save();
// Tex.WriteLine(DateInfo.PadRight(30, ' ') + Loc_ID.PadRight(20, ' ') + CONS_UPC.PadRight(20, ' ') + WD_Code.PadRight(20, ' ') + ScnQty.PadRight(20, ' ') + Rtl.PadRight(20, ' ') + prod_Desc.PadRight(20, ' '));
}
reader.Close();
}
catch (Exception)
{
MessageBox.Show("Retrieval out of bound error happened, " + TimeFrame + "'s data is not in datebase yet! Program has terminated");
return;
}
// xlApp.DisplayAlerts = false;
if (!File.Exists(filePath))
{
xlWorkBook.SaveAs(filePath, misValue, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
}
xlWorkBook.Save();
xlWorkBook.Close(true, filePath, true);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
MyConnection.Close();
// Tex.Close();
}
Reply
Answers (
3
)
Parsing a text file.
how will i change back color of user controls named UserTextBox1