1. 程式人生 > >BasicExcel另存為中文檔名出錯的解決

BasicExcel另存為中文檔名出錯的解決

wcstombs使用需要設定中文環境,具體修改程式碼如下:

bool Block::Create(const wchar_t* filename)
// PURPOSE: Create a new block file and open it.
// PURPOSE: If file is present, truncate it and then open it.
// PROMISE: Return true if file is successfully created and opened, false if otherwise.
{
	// Create new file
	size_t filenameLength = 2*wcslen(filename)+1;
	char* name = new char[filenameLength];
	size_t converted = 0;
	wcstombs_s(&converted, name, filenameLength, filename, _TRUNCATE);
	//name[filenameLength] = 0;

	setlocale(LC_ALL,"");
	file_.open(name, ios_base::out | ios_base::trunc);	
	setlocale(LC_ALL,"C");

	file_.close();
	file_.clear();

	// Open the file
	bool ret = this->Open(filename);
	delete[] name;
	return ret;
}

bool Block::Open(const wchar_t* filename, ios_base::openmode mode)
// PURPOSE: Open an existing block file.
// PROMISE: Return true if file is successfully opened, false if otherwise.
{
	// Open existing file for reading or writing or both
	size_t filenameLength = wcslen(filename);
	filename_.resize(2*filenameLength+1, 0);
	setlocale(LC_ALL,"");
	wcstombs(&*(filename_.begin()), filename, 2*filenameLength+1);
	
	file_.open(&*(filename_.begin()), mode | ios_base::binary);
	setlocale(LC_ALL,"C");
	if (!file_.is_open()) return false;

	mode_ = mode;
	
	// Calculate filesize
	if (mode & ios_base::in)
	{
		file_.seekg(0, ios_base::end);
		fileSize_ = file_.tellg();
	}
	else if (mode & ios_base::out)
	{
		file_.seekp(0, ios_base::end);
		fileSize_ = file_.tellp();
	}
	else
	{
		this->Close();
		return false;	
	}
	
	// Calculate last index + 1
	indexEnd_ = fileSize_/blockSize_ + (fileSize_ % blockSize_ ? 1 : 0);
	return true;
}


相關推薦

BasicExcel中文檔名出錯解決

wcstombs使用需要設定中文環境,具體修改程式碼如下: bool Block::Create(const wchar_t* filename) // PURPOSE: Create a new block file and open it. // PURPOSE: If

chrome圖片無響應解決方法

先切換為系統自帶的輸入法在另存為圖片,果然可以了,貼吧裡面說的原因是“輸入法的狀態列與chrome瀏覽器的另存為視窗衝突 可能是大家都在搶顯示在最前面 ”,設定下輸入法狀態列,改成嵌入式的,不用切換也好了,這裡記錄下

新增頭資訊,"檔案下載/"對話方塊指定預設檔名.........................

string path = Server.MapPath(this.xlfile.Text+".xls");     System.IO.FileInfo file =new System.IO.FileInfo(path);     Response.Clear();  

解決Excel裡面TXT後,多了很多引號的問題。

一、問題描述: Excel另存為.txt文字格式時,發現單元格中出現雙引號怎麼回事? eg: 在Excel中輸入下面格式的資料(在一列單元格中) 1 "E" 2 "N1" 3 "N10" 4 "N11" 5 "N12" 6 "N13" 7 "N14" 8 "N15" 9

Word2016PDF檔案時無書籤導航的解決方法

    近期在寫畢業論文,在進行word另存為pdf時出現了一個問題,就是pdf檔案開啟後沒有顯示word裡的書籤導航,很是不方便,上網找到了解決辦法:---------------1、另存為的時候選擇

Word列印目錄或PDF時出現“錯誤!未定義書籤!”的解決辦法

今天在單獨列印一份三頁的目錄Word文件時,所有目錄的頁碼全部變為“錯誤!未定義書籤!”,很是奇妙!一開始還以為是列印問題,又重新列印了一次,問題依舊。後來經過仔細研究,發現是“域”的問題。 解決辦法:全選(Crtl+A),按下Crtl+F11,再列印或者另存為PDF

解決Excelcsv檔案在linux上亂碼問題

首先excel另存為的時候,選擇儲存為csv檔案型別,有個工具的選項,編碼那裡選擇unicode,儲存。 這樣在linux上面還是亂碼的,要用文字編輯器開啟剛剛儲存的csv檔案,然後另存為,編碼方式選擇utf-8. 這樣就不會亂碼啦!

解決網頁圖片的時候 ,只能儲存 .BMP的 問題

不知道 大家有沒 這樣的經歷,用 TOMCAT做應用伺服器的時候,很多圖片在頁面上顯示的時候,按右鍵-點屬性,顯示圖片格式為.JPG .GIF,但是如果按 圖片另存為的時候,儲存格式只有BMP,而且檔案尺寸很大(BMP是最大的儲存圖片型別),為了這個問題,老闆煩了我幾天了,公

程序添加“打開文件”對話框和“”對話框

eat blog start 屬性 getpath dia txt 文件對話框 parent 1、相關類:CFileDialog類   CFileDialog(     BOOL bOpenFileDialog,     LPCTSTR lpszDefExt = NULL,

winfrom中將panel圖片

phi gets 需要 ice 大小 mar lpar osc new private void button1_Click(object sender, EventArgs e) { Point ScrollMaxInfo = GetS

selenium webdriver 右鍵下載文件(結合robot and autoIt)

warn pat case 調用 印度 crs stat into ttext 最近一直在研究selenium webdriver右鍵菜單,發現selenium webdriver 無法操作瀏覽器右鍵菜單,如圖 如果我想右鍵另存為,根本操作不了。 也有在網上看到we

【轉】NPOI將DataTableXls文件

數據源 tel format poi 字符 測試 aps height har 工作需求將數據另存為XLS文件,DataTable作為中間數據源,比較通用。 因此到網上找了一段可用的代碼。 NPOI版本:2.2.1.0 /// <summary&g

Oracle~

備份 恢復 oracle 數據庫 很多的應用場景下,為了防止災難的發生,防範重要數據的丟失,異地容災解決方案層次不窮。那麽數據庫無疑成為廠家重點保護的對象,那麽來一起學習一下Oracle的備份機制。Oracle備可以分為邏輯導出/導入和物理備份/恢復 邏輯備份:其實就是利用exp/imp

SharePoint Online 、office 365缺少將站點模板選項

雲計算 Office 365 之前文章行給出在SharePoint 2010 、SharePoint 2013 中將站點保存模板選項的文章。其實同樣的問題出現在Microsoft Office 365的一部分SharePoint Online中,所以在這篇文章做一下分享。我們註意到SharePoint

禁止網頁 右鍵,左鍵等

htm ram func lec cts script 禁止 alert start 禁止另存為, <body></body> 標簽裏面寫入 <noscript><iframe src=‘*.htm‘></i

angular1 開啟檔案 並(檔案的讀取與寫入)

最近有個需求,在頁面上有個按鈕可以選取檔案然後在匯出到其它地方, 說明白點就是檔案的讀取與寫入,下面是例子(例子中用到了fileSave.js github地址:https://github.com/eligrey/FileSaver.js) 首先引入fileSave.js    i

Python小工具,長圖pdf

在網上了一個長的圖片,結果發現沒有一個合適的工具,將長圖先批量擷取為4:3格式,儲存到指定地點,然後儲存為pdf 程式碼: from reportlab.lib.pagesizes import portrait from reportlab.pdfgen import canvas i

將檔案以流的形式下載

string strFile = Server.MapPath("/images/526763.pdf"); using (FileStream fs = new FileStream(strFile, FileMode.Open)) { byte[] bytes = new byte[(

如何將CAD中的圖紙電腦桌面

現在,建築設計師們繪製完CAD圖紙後都需要進行檢查,然後移交給上司或者客戶進行檢視,在上交的時候,你的上司需要你將CAD圖紙傳送到它的電腦中然後在CAD看圖軟體中進行檢視,但是不可能每次都要開啟那個介面,那樣就非常的麻煩,為了下一次檢視的方便,就需要將CAD圖紙另存為電腦桌面上。如何將CAD中的圖紙另存為電腦

python中str與list互換,txt檔案的讀取,字串變成列表操作,TXT時從列表變成字串

file = open ("wider_face_train_bbx_gt.txt") for line in lines: print(type(line)) #<type 'str'> #78 221 7 8 2 0 0 0 0